2013-10-01 10 views
52

मैं एक ASP.Net MVC 4 ऐप है और इस तरह Url.Action सहायक उपयोग कर रहा हूँ: @Url.Action("Information", "Admin")URL.Action() मार्ग सहित महत्व देता

यह पृष्ठ एक नया जोड़ने दोनों के लिए इस्तेमाल किया और एक व्यवस्थापक प्रोफ़ाइल संपादित कर रहा है । यूआरएल इस प्रकार हैं:

Adding a new:  http://localhost:4935/Admin/Information 
Editing Existing: http://localhost:4935/Admin/Information/5 <==Admin ID 

जब मैं साइट के Editing Existing खंड में हूँ और तय करते हैं कि मैं एक नया व्यवस्थापक मैं नीचे दिए गए लिंक पर क्लिक करें जोड़ना चाहते हैं:

<a href="@Url.Action("Information", "Admin")">Add an Admin</a> 

समस्या हालांकि हालांकि उपर्युक्त लिंक वास्तव में http://localhost:4935/Admin/Information/5 पर जा रहा है। यह तब होता है जब मैं उस पृष्ठ में एक मौजूदा व्यवस्थापक को संपादित करता हूं। साइट पर कहीं भी यह http://localhost:4935/Admin/Information

किसी और को यह सही ढंग से लिंक करता है?

अद्यतन:

RouteConfig:

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

आप की जाँच क्या अपने अपने मार्गों कि क्या पंजीकरण सही हैं? – Spock

+2

आपका क्या मतलब है? यह डिफ़ॉल्ट मानक है जो डिफ़ॉल्ट टेम्पलेट – hjavaher

उत्तर

75

MVC में बाहर जाने वाले यूआरएल वर्तमान मार्ग स्कीमा के आधार पर जेनरेट किए।

क्योंकि आपकी सूचना कार्रवाई विधि को आईडी पैरामीटर की आवश्यकता होती है, और आपके रूट संग्रह में आपके वर्तमान अनुरोधित यूआरएल (/ व्यवस्थापक/सूचना/5) की आईडी है, आईडी पैरामीटर स्वचालित रूप से मौजूदा रूट संग्रह मूल्यों से प्राप्त होता है।

इस समस्या को हल करने के लिए आप UrlParameter.Optional उपयोग करना चाहिए:

<a href="@Url.Action("Information", "Admin", new { id = UrlParameter.Optional })">Add an Admin</a> 
+1

के साथ आया था, हम इसे एएसपीनेट कोर में कैसे कर सकते हैं? कोई 'UrlParameter.Optional' नहीं है – MOD

0

तुम भी इस रूप में उपयोग कर सकते हैं:

<a href="@Url.Action("Information", "Admin", null)"> Admin</a>

संबंधित मुद्दे