ASP.NET中的HTML.ActionLink与Url.Action Razor
HTML.ActionLink
与Url.Action
之间有什么区别,或者他们只是两种做同样的事情?
我应该什么时候比另一个更喜欢?
是,有一点不同。 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 。
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(...)
您正在创build自己的锚标签,您可以轻松地设置自己的链接文本,即使使用其他一些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> }
在上面的例子中,你可以看到,如果我特别需要一个button来做一些动作,我必须用@ Url.Action来做,而如果我只是想要一个链接,我会使用@ Html.ActionLink。 重点是当你必须使用一些元素(HTML)的动作url使用。
通过使用适当的CSS样式,您可以轻松地将Html.ActionLink作为button呈现。 例如:
@Html.ActionLink("Save", "ActionMethod", "Controller", new { @class = "btn btn-primary" })
我使用下面的代码来创build一个button,它为我工作。
<input type="button" value="PDF" onclick="location.href='@Url.Action("Export","tblOrder")'"/>