ASP.NET Razor'da HTML.ActionLink vs Url.Action

HTML.ActionLinkileUrl.Action` arasında herhangi bir fark var mı yoksa bunlar aynı şeyi yapmanın iki yolu mu?

Ne zaman birini diğerine tercih etmeliyim?

Çözüm

Evet, arada bir fark var. Html.ActionLinkbiretiketi ü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.

Yorumlar (8)

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 = "" }, null)

üretir:

<a href="/controllerName/actionName/id">link text</a>

ve

@Url.Action("actionName", "controllerName", new { id = "" }) 

üretir:

/controllerName/actionName/

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" })">
Yorumlar (0)
<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.

Yorumlar (0)