2014-06-17 3 views
5

वर्तमान में मेरे प्रोजेक्ट में मैं एंकर टैग के href विशेषता में लिंक बनाने के लिए @ Url.Action का उपयोग कर रहा हूं।यूआरएल.एक्शन पूर्ण यूआरएल उत्पादन करने के लिए क्वेरीस्ट्रिंग का उत्पादन करता है?

उदाहरण के लिए

:

<a href='@Url.Action("Index", "Home", new { id = 10 })' id="btn">Click</a> 

और यह ठीक काम करता है, फिर भी यूआरएल का उत्पादन किया है ...

/home/index?id=10 

वहाँ के लिए यूआरएल

/home/index/10 

वापस जाने के लिए एक रास्ता है एसईओ और सौंदर्य उद्देश्यों? मैं एक आईडी और एक प्लेसहोल्डर के रूप में इस्तेमाल किया संख्या - वास्तविक आवेदन यह कर सकते हैं में और बदले में एक स्ट्रिंग का उपयोग करेगी (ताकि ...

<a href='@Url.Action("Index", "Home", new { name="test" })' id="btn">Click</a> 

यूआरएल

/home/index/test 
+0

'Url.Action' आपकी रूटिंग तालिका का उपयोग करेगा, क्या यह अनुमति देने के लिए सही तरीके से सेट किया गया है? – DavidG

+0

@ डेविड जी की अनुमति है, क्योंकि मैं पूर्ण यूआरएल का उपयोग कर सकता हूं। हालांकि दोनों एक ही पृष्ठ पर ले जाते हैं। '/ home/index/test' काम करता है - लेकिन ऐसा करता है '/ home/index? name = test' –

उत्तर

3

आप यह सुनिश्चित करें कि जरूरत है वापस जाने के लिए मार्ग सही है सुनिश्चित करें कि आप इस तरह एक मार्ग है बनाओ:।

routes.MapRoute(
    name: "Default", 
    url: "{controller}/{action}/{id}", 
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }); 

अपने 'असली आवेदन' के लिए, के रूप में आप नामक पैरामीटर name उपयोग कर रहे हैं तो आप इस तरह लग रही एक की आवश्यकता होगी:

routes.MapRoute(
    name: "Default", 
    url: "{controller}/{action}/{name}", 
    defaults: new { controller = "Home", action = "Index" }); 
संबंधित मुद्दे