HTML.ActionLink
Vs arasında herhangi bir fark var mı Url.Action
ya da aynı şeyi yapmanın sadece iki yolu var mı?
Ne zaman diğerini tercih etmeliyim?
HTML.ActionLink
Vs arasında herhangi bir fark var mı Url.Action
ya da aynı şeyi yapmanın sadece iki yolu var mı?
Ne zaman diğerini tercih etmeliyim?
Yanıtlar:
Evet, bir fark var. Html.ActionLink
bir <a href=".."></a>
etiket oluşturur, Url.Action
yalnızca bir URL döndürür.
Örneğin:
@Html.ActionLink("link text", "someaction", "somecontroller", new { id = "123" }, null)
oluşturur:
<a href="/somecontroller/someaction/123">link text</a>
ve Url.Action("someaction", "somecontroller", new { id = "123" })
üretir:
/somecontroller/someaction/123
Alt denetleyici eylemini yürüten Html.Action da vardır .
<a>
) oluşturmanız gerektiğinde Html.ActionLink kullanın . Yalnızca bir url oluşturmanız gerektiğinde Url.Action'ı kullanın (bu, bir denetleyici eyleminde de kullanılabilir).
Url.Action
çok daha performanslıdır Html.ActionLink
. 2 olan 6.000 öğeden oluşan bir listem vardı Html.ActionLinks
. Listenin oluşturulması 6.600 ms sürdü. Bu olmadan Html.ActionLinks
52 ms sürdü. Kullanarak Url.Action
270 ms sürdü. Verilen 6000 öğe büyük bir listedir, ancak ileride başvurmak üzere ekleyeceğimi düşündüm.
Html.ActionLink
<a href=".."></a>
otomatik olarak bir etiket oluşturur .
Url.Action
yalnızca bir url oluşturur.
Örneğin:
@Html.ActionLink("link text", "actionName", "controllerName", new { id = "<id>" }, null)
oluşturur:
<a href="/controllerName/actionName/<id>">link text</a>
ve
@Url.Action("actionName", "controllerName", new { id = "<id>" })
oluşturur:
/controllerName/actionName/<id>
Sevdiğim en iyi artı noktası Url.Action(...)
Kendi bağlı metninizi başka bir html etiketi ile bile kolayca ayarlayabileceğiniz kendi başınıza çapa etiketi 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 bazı eylemleri yapmak için bir düğmeye ihtiyacım varsa, @ Url.Action ile yapmam gerektiğini, ancak sadece bir bağlantı istiyorsanız @ Html.ActionLink kullanacağımı görebilirsiniz. Buradaki nokta, eylem url'si ile bazı öğeler (HTML) kullanmanız gerektiğidir.
@HTML.ActionLink
a üretir HTML anchor tag
. Süre sizin için @Url.Action
bir üretir URL
. Bunu kolayca anlayabilirsiniz;
// 1. <a href="https://stackoverflow.com/ControllerName/ActionMethod">Item Definition</a>
@HTML.ActionLink("Item Definition", "ActionMethod", "ControllerName")
// 2. /ControllerName/ActionMethod
@Url.Action("ActionMethod", "ControllerName")
// 3. <a href="https://stackoverflow.com/ControllerName/ActionMethod">Item Definition</a>
<a href="@Url.Action("ActionMethod", "ControllerName")"> Item Definition</a>
Bu yaklaşımların her ikisi de farklıdır ve tamamen ihtiyacınıza bağlıdır.
Html.ActionLink'i uygun CSS stilini kullanarak kolayca bir düğme olarak sunabilirsiniz . Örneğin:
@Html.ActionLink("Save", "ActionMethod", "Controller", new { @class = "btn btn-primary" })
Bir Düğme oluşturmak için aşağıdaki kodu kullandım ve benim için çalıştı.
<input type="button" value="PDF" onclick="location.href='@Url.Action("Export","tblOrder")'"/>
Html.ActionLink
bunları oluşturmak için kullanın . Bu tür mikro optimizasyonlar yapmaya çalışmayın. Sonuçlarınızda çirkin kodlarla karşılaşacaksınız.