Er det noen forskjell mellom HTML.ActionLink
og Url.Action
, eller er de bare to måter å gjøre det samme på?
Når bør jeg foretrekke den ene fremfor den andre?
Ja, det er en forskjell. Html.ActionLink
genererer en <a href=".."></a>
-tag, mens Url.Action
bare returnerer en nettadresse.
For eksempel
@Html.ActionLink("link text", "someaction", "somecontroller", new { id = "123" }, null)
genererer:
<a href="/somecontroller/someaction/123">link text</a>
og Url.Action("someaction", "somecontroller", new { id = "123" })
genererer:
/somecontroller/someaction/123
Det finnes også Html.Action som utfører en underordnet kontrollerhandling.
Html.ActionLinkgenererer en
` tag automatisk.
Url.Action
genererer bare en nettadresse.
For eksempel
@Html.ActionLink("link text", "actionName", "controllerName", new { id = "<id>" }, null)
genererer:
<a href="/controllerName/actionName/<id>">link text</a>
og
@Url.Action("actionName", "controllerName", new { id = "<id>" })
genererer:
/controllerName/actionName/<id>
Beste pluss som jeg liker er å bruke Url.Action(...)
Du oppretter din egen anker-tag der du enkelt kan angi din egen lenket tekst, selv med en annen html-tag.
<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>
}
I eksemplet ovenfor kan du se at hvis jeg spesifikt trenger en knapp for å utføre en handling, må jeg gjøre det med @Url.Action, mens hvis jeg bare vil ha en lenke, bruker jeg @Html.ActionLink. Poenget er når du må bruke et element (HTML) med en handlingsadresse.