Gibt es einen Unterschied zwischen HTML.ActionLink
gegen Url.Action
oder handelt es sich nur um zwei Arten, dieselbe Sache zu tun?
Wann sollte ich das eine dem anderen vorziehen?
Gibt es einen Unterschied zwischen HTML.ActionLink
gegen Url.Action
oder handelt es sich nur um zwei Arten, dieselbe Sache zu tun?
Wann sollte ich das eine dem anderen vorziehen?
Ja, es gibt einen Unterschied. Html.ActionLink
erzeugt eine <a href=".."></a>
Tag in der Erwägung, dass Url.Action
gibt nur eine Url zurück.
Zum Beispiel:
@Html.ActionLink("link text", "someaction", "somecontroller", new { id = "123" }, null)
erzeugt:
<a href="http://stackoverflow.com/somecontroller/someaction/123">link text</a>
et Url.Action("someaction", "somecontroller", new { id = "123" })
erzeugt:
/somecontroller/someaction/123
Außerdem gibt es Html.Action die eine untergeordnete Controller-Aktion ausführt.
Html.ActionLink
erzeugt eine <a href=".."></a>
Tag automatisch.
Url.Action
erzeugt nur eine Url.
Zum Beispiel:
@Html.ActionLink("link text", "actionName", "controllerName", new { id = "<id>" }, null)
erzeugt:
<a href="http://stackoverflow.com/controllerName/actionName/<id>">link text</a>
et
@Url.Action("actionName", "controllerName", new { id = "<id>" })
erzeugt:
/controllerName/actionName/<id>
Der beste Pluspunkt, der mir gefällt, ist die Verwendung von Url.Action(...)
Sie erstellen einen eigenen Anker-Tag, mit dem Sie Ihren eigenen verlinkten Text auch mit einem anderen HTML-Tag leicht setzen können.
<a href="@Url.Action("actionName", "controllerName", new { id = "<id>" })">
<img src="<ImageUrl>" style"width:<somewidth>;height:<someheight> />
@Html.DisplayFor(model => model.<SomeModelField>)
</a>
@HTML.ActionLink
erzeugt eine HTML anchor tag
. Während @Url.Action
erzeugt eine URL
für Sie. Sie können es leicht verstehen, indem;
// 1. <a href="http://stackoverflow.com/ControllerName/ActionMethod">Item Definition</a>
@HTML.ActionLink("Item Definition", "ActionMethod", "ControllerName")
// 2. /ControllerName/ActionMethod
@Url.Action("ActionMethod", "ControllerName")
// 3. <a href="http://stackoverflow.com/ControllerName/ActionMethod">Item Definition</a>
<a href="@Url.Action("ActionMethod", "ControllerName")"> Item Definition</a>
Beide Ansätze sind unterschiedlich, und es kommt ganz auf Ihre Bedürfnisse an.
<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>
}
Im obigen Beispiel sehen Sie, dass ich, wenn ich eine Schaltfläche für eine bestimmte Aktion benötige, @Url.Action verwenden muss, während ich, wenn ich nur einen Link haben möchte, @Html.ActionLink verwenden werde. Der Punkt ist, wenn Sie ein Element (HTML) mit Aktion verwenden müssen, wird url verwendet.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.