2012-02-23 14 views
14

ASP.NET MVC के प्रलेखन में कहते हैं जब एक दृश्य केलाभ की जगह (@href)

<a href="@href("~/SubPage")">Subpage</a>. 

उस्तरा इंजन /Subpage को @href("~/SubPage") की जगह में एक लिंक है कि आप कुछ इस तरह करना चाहिए।

क्या का लाभ है यह इस तरह से कर के बजाय

<a href="/SubPage">Subpage</a>. 

इस तरह के मामलों में और दूसरों में (एक फार्म बनाने की तरह) क्यों लिखने के बजाय उस्तरा इंजन का उपयोग सीधे आप क्या चाहते हैं। मुझे लगता है कि सर्वर की तरफ तेजी से कुछ प्रिंट करने के लिए इंजन है जो इंजन को उत्पन्न करने देता है।

उत्तर

24

आपके आवेदन एक सबफ़ोल्डर में चलाता है, उस्तरा @href इस तरह सही लिंक पैदा करेगा:

www.myapp.com/subfolder/SubPage 

आप खुद ही इसे लिखने यदि आपके लिंक इस तरह होगा और काम नहीं करेगा:

www.myapp.com/SubPage 

Thats क्योंकि ~ को रेजर द्वारा आपके एप्लिकेशन रूट के साथ बदल दिया जाएगा।

+0

और यदि मैं सबफ़ोल्डर के साथ लिंक लिखता हूं या ऐप सबफ़ोल्डर में नहीं है, तो क्या कोई फायदे हैं? –

+6

नहीं, मुझे ऐसा नहीं लगता है। लेकिन आप लचीलापन खो देते हैं - आप अपने पूरे प्रोजेक्ट को खोजे बिना सबफ़ोल्डर का नाम कभी भी नहीं बदल पाएंगे, जहां आपने वह नाम लिखा था। मैं ऐसा करने के लिए बेहद असहज हूं। – Marc

+1

+ 1- यह छोटा मणि (@href) एसओओ कई देवताओं द्वारा अनदेखा किया गया है (जब @ Html.ActionLink() का उपयोग नहीं किया जाता है)। अगर मैं कर सकता हूं तो आपको दोहरा वोट मिलेगा :) –

0

मैं बस लिखना

<a href="SubPage">Subpage</a>

मैं किसी भी नकारात्मक वापस आने

+1

यदि आपने कस्टम मार्ग निर्धारित किए हैं, तो यह संभावित रूप से लिंक तोड़ देगा। उदाहरण के लिए, यदि मेरे पास 'पृष्ठ/नियंत्रक' की 'सबपेज' कार्रवाई में मैप किया गया कस्टम मार्ग 'ए/बी/सी' है और मेरा लिंक href 'अन्य पेज' है, तो ब्राउज़र 'ए/बी/अन्य पेज' पर नेविगेट करेगा हालांकि , इस संदर्भ में, इच्छित लक्ष्य 'पृष्ठ/अन्य पृष्ठ' होगा। यह इस बात के बारे में नहीं है कि आपका ऐप वर्तमान में कैसे लिखा गया है, यह हर ऐप को अनुकूली तरीके से लिखने के बारे में है और अनुकूली रूप से खराब हो सकता है। यह ऐप को थोड़ा और पोर्टेबल बनाता है और भविष्य में बदलावों का अधिक आसानी से समर्थन करता है। – defines

2

ActionLink विधि HTML नहीं ले जा सकते पता ही नहीं सकता है।

आपको सामान्य <a> टैग बनाने की आवश्यकता है, और के लिए @Url.Action(...) का उपयोग करें।

<a href="@Url.Action("ActionName", "ControllerName")">Link Text</a>. 
संबंधित मुद्दे