มีความแตกต่างระหว่างHTML.ActionLink
vs Url.Action
หรือพวกเขาเป็นเพียงสองวิธีในการทำสิ่งเดียวกันหรือไม่?
เมื่อใดที่ฉันควรเลือกหนึ่งรายการมากกว่ารายการอื่น
มีความแตกต่างระหว่างHTML.ActionLink
vs Url.Action
หรือพวกเขาเป็นเพียงสองวิธีในการทำสิ่งเดียวกันหรือไม่?
เมื่อใดที่ฉันควรเลือกหนึ่งรายการมากกว่ารายการอื่น
คำตอบ:
ใช่มีความแตกต่าง Html.ActionLink
สร้าง<a href=".."></a>
แท็กในขณะที่Url.Action
ส่งกลับเฉพาะ URL
ตัวอย่างเช่น:
@Html.ActionLink("link text", "someaction", "somecontroller", new { id = "123" }, null)
สร้าง:
<a href="/somecontroller/someaction/123">link text</a>
และUrl.Action("someaction", "somecontroller", new { id = "123" })
สร้าง:
/somecontroller/someaction/123
นอกจากนี้ยังมีHtml.Actionซึ่งเรียกใช้งานแอคชันลูกควบคุม
<a>
) ใช้ Url.Action เมื่อคุณต้องการสร้างเฉพาะ url (ซึ่งสามารถใช้ในการดำเนินการควบคุม)
Url.Action
เป็น performat Html.ActionLink
มากกว่า ผมมีรายการ 6,000 รายการที่มี Html.ActionLinks
2 ใช้เวลา 6,600 มิลลิวินาทีในการแสดงรายการ โดยไม่ต้องHtml.ActionLinks
ใช้เวลา 52ms ใช้Url.Action
มันใช้เวลา 270ms ได้รับแล้ว 6,000 รายการเป็นรายการที่มีขนาดใหญ่ แต่คิดว่าฉันจะเพิ่มไว้เพื่อใช้อ้างอิงในอนาคต
Html.ActionLink
สร้าง<a href=".."></a>
แท็กโดยอัตโนมัติ
Url.Action
สร้าง URL เท่านั้น
ตัวอย่างเช่น:
@Html.ActionLink("link text", "actionName", "controllerName", new { id = "<id>" }, null)
สร้าง:
<a href="/controllerName/actionName/<id>">link text</a>
และ
@Url.Action("actionName", "controllerName", new { id = "<id>" })
สร้าง:
/controllerName/actionName/<id>
จุดบวกที่ดีที่สุดที่ฉันชอบคือการใช้ Url.Action(...)
คุณกำลังสร้างแท็กสมอด้วยของคุณเองซึ่งคุณสามารถตั้งค่าข้อความที่เชื่อมโยงของคุณได้อย่างง่ายดายแม้จะมีแท็ก html อื่น ๆ
<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>
}
ในตัวอย่างด้านบนคุณจะเห็นว่าหากฉันต้องการปุ่มเฉพาะเพื่อดำเนินการบางอย่างฉันต้องทำกับ @ Url.Action ในขณะที่ถ้าฉันต้องการลิงค์ฉันจะใช้ @ Html.ActionLink จุดคือเมื่อคุณต้องใช้องค์ประกอบบางอย่าง (HTML) กับ URL การกระทำที่ใช้
@HTML.ActionLink
HTML anchor tag
สร้าง ในขณะที่@Url.Action
สร้างURL
สำหรับคุณ คุณสามารถเข้าใจได้โดยง่าย;
// 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>
วิธีการทั้งสองนี้แตกต่างกันไปและขึ้นอยู่กับความต้องการของคุณ
คุณสามารถนำเสนอHtml.ActionLinkเป็นปุ่มได้อย่างง่ายดายโดยใช้สไตล์ CSS ที่เหมาะสม ตัวอย่างเช่น:
@Html.ActionLink("Save", "ActionMethod", "Controller", new { @class = "btn btn-primary" })
ฉันใช้รหัสด้านล่างเพื่อสร้างปุ่มและใช้งานได้สำหรับฉัน
<input type="button" value="PDF" onclick="location.href='@Url.Action("Export","tblOrder")'"/>
Html.ActionLink
เพื่อสร้างลิงก์ อย่าพยายามทำการเพิ่มประสิทธิภาพขนาดเล็กเช่นนั้น คุณจะจบลงด้วยรหัสที่น่าเกลียดในมุมมองของคุณ