HTML.ActionLink和Url.Action之间有什么区别吗?或者它们只是做同一件事的两种方式?
HTML.ActionLink
Url.Action
什么时候我应该选择其中一个而不是另一个?
是的,这是有区别的。Html.ActionLink生成一个<a href=".."></a>标记,而Url.Action只返回一个url。
Html.ActionLink
<a href=".."></a>
例如:
@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" })生成:
Url.Action("someaction", "somecontroller", new { id = "123" })
/somecontroller/someaction/123
还有超文本标记语言行动,它执行子控制器动作。
<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> }
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(...)
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>
我使用下面的代码创建了一个按钮,它为我工作。
<input type="button" value="PDF" onclick="location.href='@Url.Action("Export","tblOrder")'"/>
@Html.ActionLink("Save", "ActionMethod", "Controller", new { @class = "btn btn-primary" })
@HTML.ActionLink生成一个HTML anchor tag。而@Url.Action为你生成一个URL。你可以通过;
@HTML.ActionLink
HTML anchor tag
@Url.Action
URL
// 1. <a href="/ControllerName/ActionMethod">Item Definition</a> @HTML.ActionLink("Item Definition", "ActionMethod", "ControllerName") // 2. /ControllerName/ActionMethod @Url.Action("ActionMethod", "ControllerName") // 3. <a href="/ControllerName/ActionMethod">Item Definition</a> <a href="@Url.Action("ActionMethod", "ControllerName")"> Item Definition</a>
这两种方法都是不同的,完全取决于你的需要。