क्या HTML.ActionLink
बनाम के बीच कोई अंतर है Url.Action
या वे एक ही काम करने के सिर्फ दो तरीके हैं?
मुझे कब एक पर दूसरे को पसंद करना चाहिए?
क्या HTML.ActionLink
बनाम के बीच कोई अंतर है 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>
) उत्पन्न करने की आवश्यकता हो तो Html.ActionLink का उपयोग करें । Url का उपयोग करें। जब आपको केवल एक url उत्पन्न करने की आवश्यकता हो (इसका उपयोग नियंत्रक क्रिया में भी किया जा सकता है)।
Url.Action
की तुलना में बहुत अधिक प्रदर्शन है Html.ActionLink
। मेरे पास 6,000 वस्तुओं की एक सूची थी जिसमें 2 थे Html.ActionLinks
। इस सूची को प्रस्तुत करने में 6,600 किलोमीटर का समय लगा। इसके बिना Html.ActionLinks
52ms लगते थे। इसके इस्तेमाल से Url.Action
270 मी। दी गई, 6000 आइटम एक बड़ी सूची है, लेकिन मुझे लगा कि मैं इसे भविष्य में संदर्भ के लिए जोड़ूंगा।
Html.ActionLink
एक <a href=".."></a>
टैग स्वचालित रूप से उत्पन्न करता है ।
Url.Action
केवल एक यूआरएल उत्पन्न करता है।
उदाहरण के लिए:
@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) का उपयोग करना है।
@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>
ये दोनों दृष्टिकोण अलग-अलग हैं और यह पूरी तरह से आपकी जरूरत पर निर्भर करता है।
आप आसानी से उपयुक्त CSS शैली का उपयोग करके एक बटन के रूप में Html.ActionLink प्रस्तुत कर सकते हैं । उदाहरण के लिए:
@Html.ActionLink("Save", "ActionMethod", "Controller", new { @class = "btn btn-primary" })
मैंने एक बटन बनाने के लिए नीचे दिए गए कोड का उपयोग किया और यह मेरे लिए काम आया।
<input type="button" value="PDF" onclick="location.href='@Url.Action("Export","tblOrder")'"/>
Html.ActionLink
उन्हें उत्पन्न करने के लिए उपयोग करें। ऐसी माइक्रो ऑप्टिमाइज़ेशन करने की कोशिश न करें। आप अपने विचारों में बदसूरत कोड के साथ समाप्त हो जाएगा।