HTML.ActionLinkile
Url.Action` arasında herhangi bir fark var mı yoksa bunlar aynı şeyi yapmanın iki yolu mu?
Ne zaman birini diğerine tercih etmeliyim?
Evet, arada bir fark var. Html.ActionLinkbir
etiketi üretirken,
Url.Action` yalnızca bir url döndürür.
Örneğin:
@Html.ActionLink("link text", "someaction", "somecontroller", new { id = "123" }, null)
üretir:
<a href="/somecontroller/someaction/123">link text</a>
ve Url.Action("someaction", "somecontroller", new { id = "123" })
oluşturur:
/somecontroller/someaction/123
Ayrıca bir alt denetleyici eylemini yürüten Html.Action da vardır.
Html.ActionLinkotomatik olarak bir
` etiketi oluşturur.
URL.Action` yalnızca bir URL oluşturur.
Örneğin:
@Html.ActionLink("link text", "actionName", "controllerName", new { id = "<id>" }, null)
üretir:
<a href="/controllerName/actionName/<id>">link text</a>
ve
@Url.Action("actionName", "controllerName", new { id = "<id>" })
üretir:
/controllerName/actionName/<id>
Beğendiğim en iyi artı nokta Url.Action(...)
kullanmak
Kendi bağlantılı metninizi başka bir html etiketiyle bile kolayca ayarlayabileceğiniz anchor etiketini kendiniz oluşturuyorsunuz.
<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>
}
Yukarıdaki örnekte, özellikle bir eylem yapmak için bir düğmeye ihtiyacım varsa, bunu @Url.Action ile yapmam gerektiğini, ancak sadece bir bağlantı istiyorsam @Html.ActionLink kullanacağımı görebilirsiniz. Önemli olan nokta, eylem url'si ile bazı öğeleri (HTML) kullanmanız gerektiğinde kullanılır.