Apakah ada perbedaan antara HTML.ActionLinkvs Url.Actionatau mereka hanya dua cara melakukan hal yang sama?
Kapan saya harus lebih suka yang satu daripada yang lain?
Apakah ada perbedaan antara HTML.ActionLinkvs Url.Actionatau mereka hanya dua cara melakukan hal yang sama?
Kapan saya harus lebih suka yang satu daripada yang lain?
Jawaban:
Ya, ada perbedaan. Html.ActionLinkmenghasilkan <a href=".."></a>tag sedangkan Url.Actionhanya mengembalikan url.
Sebagai contoh:
@Html.ActionLink("link text", "someaction", "somecontroller", new { id = "123" }, null)
menghasilkan:
<a href="/somecontroller/someaction/123">link text</a>
dan Url.Action("someaction", "somecontroller", new { id = "123" })menghasilkan:
/somecontroller/someaction/123
Ada juga Html.Action yang mengeksekusi aksi pengontrol anak.
<a>). Gunakan Url.Action saat Anda hanya perlu membuat url (ini juga bisa digunakan dalam tindakan pengontrol).
Url.Actionjauh lebih performat daripada Html.ActionLink. Saya memiliki daftar 6.000 item yang memiliki 2 Html.ActionLinks. Butuh 6.600 m untuk membuat daftar. Tanpa Html.ActionLinksitu butuh 52 ms. Menggunakannya Url.Actionmembutuhkan 270ms. Memang, 6000 item adalah daftar besar, tetapi saya pikir saya akan menambahkannya untuk referensi di masa mendatang.
Html.ActionLinkmembuat <a href=".."></a>tag secara otomatis.
Url.Action hanya menghasilkan url.
Sebagai contoh:
@Html.ActionLink("link text", "actionName", "controllerName", new { id = "<id>" }, null)
menghasilkan:
<a href="/controllerName/actionName/<id>">link text</a>
dan
@Url.Action("actionName", "controllerName", new { id = "<id>" })
menghasilkan:
/controllerName/actionName/<id>
Poin plus terbaik yang saya suka gunakan Url.Action(...)
Anda membuat tag jangkar oleh Anda sendiri di mana Anda dapat mengatur teks tertaut Anda sendiri dengan mudah bahkan dengan beberapa tag html lainnya.
<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>
}
Dalam contoh di atas Anda dapat melihat bahwa Jika saya secara khusus memerlukan tombol untuk melakukan beberapa tindakan, saya harus melakukannya dengan @ Url.Action sedangkan jika saya hanya ingin tautan saya akan menggunakan @ Html.ActionLink. Intinya adalah ketika Anda harus menggunakan beberapa elemen (HTML) dengan url tindakan yang digunakan.
@HTML.ActionLinkmenghasilkan a HTML anchor tag. Sementara @Url.Actionmenghasilkan URLuntuk Anda. Anda dapat dengan mudah memahaminya dengan;
// 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>
Kedua pendekatan ini berbeda dan sangat tergantung pada kebutuhan Anda.
Anda dapat dengan mudah menyajikan Html.ActionLink sebagai tombol dengan menggunakan gaya CSS yang sesuai. Sebagai contoh:
@Html.ActionLink("Save", "ActionMethod", "Controller", new { @class = "btn btn-primary" })
Saya menggunakan kode di bawah ini untuk membuat Tombol dan itu berhasil untuk saya.
<input type="button" value="PDF" onclick="location.href='@Url.Action("Export","tblOrder")'"/>
Html.ActionLinkuntuk membuatnya. Jangan mencoba melakukan optimasi mikro semacam itu. Anda akan berakhir dengan kode jelek di tampilan Anda.