HTML.ActionLink
vs Url.Action
和它们只是做同一件事的两种方式之间有什么区别吗?
我什么时候比另一个更喜欢?
HTML.ActionLink
vs Url.Action
和它们只是做同一件事的两种方式之间有什么区别吗?
我什么时候比另一个更喜欢?
Answers:
是,有一点不同。Html.ActionLink
生成一个<a href=".."></a>
标签,而Url.Action
仅返回一个URL。
例如:
@Html.ActionLink("link text", "someaction", "somecontroller", new { id = "123" }, null)
产生:
<a href="/somecontroller/someaction/123">link text</a>
并Url.Action("someaction", "somecontroller", new { id = "123" })
生成:
/somecontroller/someaction/123
还有Html.Action执行子控制器动作。
<a>
)时,请使用Html.ActionLink 。当您只需要生成一个url时,请使用Url.Action(也可以在控制器操作中使用)。
Url.Action
比Html.ActionLink
。我列出了6,000个项目,其中有2个Html.ActionLinks
。花费了6600毫秒来渲染列表。没有Html.ActionLinks
它花了52毫秒。使用Url.Action
它花费了270毫秒。当然,有6000项是一个很大的列表,但我想我会添加它以供将来参考。
Html.ActionLink
<a href=".."></a>
自动生成标签。
Url.Action
仅生成一个URL。
例如:
@Html.ActionLink("link text", "actionName", "controllerName", new { id = "<id>" }, null)
产生:
<a href="/controllerName/actionName/<id>">link text</a>
和
@Url.Action("actionName", "controllerName", new { id = "<id>" })
产生:
/controllerName/actionName/<id>
我喜欢使用的最佳加分点 Url.Action(...)
您正在按自己的方式创建锚标记,即使使用其他html标记,也可以轻松设置自己的链接文本。
<a href="@Url.Action("actionName", "controllerName", new { id = "<id>" })">
<img src="<ImageUrl>" style"width:<somewidth>;height:<someheight> />
@Html.DisplayFor(model => model.<SomeModelField>)
</a>
<p>
@Html.ActionLink("Create New", "Create")
</p>
@using (Html.BeginForm("Index", "Company", FormMethod.Get))
{
<p>
Find by Name: @Html.TextBox("SearchString", ViewBag.CurrentFilter as string)
<input type="submit" value="Search" />
<input type="button" value="Clear" onclick="location.href='@Url.Action("Index","Company")'"/>
</p>
}
在上面的示例中,您可以看到,如果我特别需要一个按钮来执行某些操作,则必须使用@ Url.Action进行操作,而如果我只想要一个链接,则将使用@ Html.ActionLink。关键是当您必须使用某些元素(HTML)和操作网址时。
@HTML.ActionLink
生成一个HTML anchor tag
。虽然会为您@Url.Action
生成一个URL
。您可以很容易地理解它;
// 1. <a href="https://stackoverflow.com/ControllerName/ActionMethod">Item Definition</a>
@HTML.ActionLink("Item Definition", "ActionMethod", "ControllerName")
// 2. /ControllerName/ActionMethod
@Url.Action("ActionMethod", "ControllerName")
// 3. <a href="https://stackoverflow.com/ControllerName/ActionMethod">Item Definition</a>
<a href="@Url.Action("ActionMethod", "ControllerName")"> Item Definition</a>
这两种方法都不相同,这完全取决于您的需求。
您可以使用适当的CSS样式轻松地将Html.ActionLink呈现为按钮。例如:
@Html.ActionLink("Save", "ActionMethod", "Controller", new { @class = "btn btn-primary" })
我使用下面的代码创建了一个Button,它对我有用。
<input type="button" value="PDF" onclick="location.href='@Url.Action("Export","tblOrder")'"/>
Html.ActionLink
它们来生成它们。不要尝试进行此类微优化。您最终将在自己的视图中看到难看的代码。