2016-06-03 4 views
5

मैं जीईटी मॉडल का उपयोग करने के विपरीत कई फॉरवर्ड स्लैश के साथ तर्कों में पारित होने वाले एक सम्मेलन का पालन करने की कोशिश कर रहा हूं।एएसपी.नेट एमवीसी 4 पैरामीटर्स फॉरवर्ड स्लेश से अलग "/" सही ढंग से तर्क नहीं दे रहा है

http://www.foo.bar/controller/action?arg1=a&arg2=b&arg3=c 

इस फैशन में:

http://www.foo.bar/controller/action/a/b/c 

मैं वर्तमान में है इस (अधिकतर) काम कर रहे, का उपयोग करते हुए निम्नलिखित:

है कि, मैं एक ऐसा URL उपभोग करने के लिए देख रहा हूँ

public static void RegisterRoutes(RouteCollection routes) { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

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

     routes.MapRoute(
      name: "Sandbox", 
      url: "Sandbox/{action}/{*args}", 
      defaults: new { controller = "Sandbox", action = "Index", args = UrlParameter.Optional } 

     ); 
    } 

हालांकि, अगर मैं

जैसे कुछ में पास करता हूं
http://www.foo.bar/Sandbox/Index/a 

या

http://www.foo.bar/Sandbox/Index/a/ 

नियंत्रक और कार्रवाई को उचित रूप से कहा जाता है:

public ActionResult Index(string args) 
{ 
    return View(); 
} 

लेकिन आर्ग रिक्त है।

हालांकि, अगर मैं की तरह कुछ में पारित:

http://www.foo.bar.com/Sandbox/Index/a/b 

फिर आर्ग "a/b", के रूप में वांछित है।

मैं एसओ और बाकी वेब को खराब कर रहा हूं, लेकिन समाधान नहीं ढूंढ रहा है।

क्या इस बात को सही करने के लिए मुझे कुछ याद आ रही है?

क्या मैं गलत शब्दावली की तलाश में हूं?

नोट: मैं विंडोज प्रमाणीकरण का उपयोग कर एक ब्रांड नए एएसपी.NET एप्लिकेशन के साथ इस मुद्दे को दोबारा करने में सक्षम था। सब किया गया था:

  1. वी.एस. 2015
  2. में ASP.NET अनुप्रयोग बनाएं MVC चुनें
  3. प्रमाणीकरण परिवर्तन पर
  4. क्लिक करें
  5. विंडोज चुनें प्रमाणीकरण
  6. मानचित्र मार्ग ऊपर RouteConfig.cs
  7. में जोड़े
  8. SandboxController.cs बनाएं और इंडेक्स
  9. पर तर्क पैरामीटर जोड़ें इंडेक्स.cshtml व्यू
  10. बनाएं
  11. http://localhost:55383/Sandbox/Index/a
  12. रेप्रो अपेक्षित व्यवहार का उपयोग कर समस्या http://localhost:55383/Sandbox/Index/a/b

किसी भी मदद का उपयोग कर रेप्रो बहुत सराहना की है। धन्यवाद! इसी तरह का सवाल है, लेकिन मेरी मदद नहीं करता है: URLs with slash in parameter?

+1

अपने सभी मार्गों और आदेश दिखाएँ –

+0

हां। मैंने इसे जोड़ा और मैं अभी बहुत मूर्ख महसूस करता हूँ। मुझे एहसास हुआ कि डिफ़ॉल्ट को पहले बुलाया जा रहा था। – Thumper

उत्तर

3

कोई बात नहीं ... यहां समस्या है ...

MapRoute डिफ़ॉल्ट मार्ग को कॉल कर रहा है, पहले। इसे ठीक करने के लिए, मैंने बस सैंडबॉक्स मार्ग के साथ डिफ़ॉल्ट मानचित्र मार्ग को बदल दिया।

मुझे आशा है कि इससे किसी की मदद मिलेगी।

कार्य समाधान: (? आप भी डिफ़ॉल्ट मार्ग की क्या ज़रूरत है)

public class RouteConfig { 
    public static void RegisterRoutes(RouteCollection routes) { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

     routes.MapRoute(
      name: "Sandbox", 
      url: "Sandbox/{action}/{*args}", 
      defaults: new { controller = "Sandbox", action = "Index", args = UrlParameter.Optional } 

     ); 

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


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

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