2012-06-01 15 views
6

मैं एकाधिक पैरामीटर के साथ एक विशिष्ट यूआरएल को संभालने के लिए एक कस्टम मार्ग बनाने की कोशिश कर रहा हूं। मैंने global.asax पर एक नई नई रूट परिभाषा जोड़ दी है, लेकिन जब मैं कार्रवाई पर नेविगेट करने का प्रयास करता हूं तो मुझे त्रुटि संदेश मिलता है "कोई प्रकार नहीं मिला जो 'होम' नामक नियंत्रक से मेल खाता है।"एएसपीएनईटी एमवीसी कस्टम मार्ग विफल रहता है "कोई प्रकार नहीं मिला जो 'होम' नामक नियंत्रक से मेल खाता है।"

क्या कोई मुझे बता सकता है कि मैं गलत कहां जा रहा हूं?

Global.asax:

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

    routes.MapHttpRoute(
     name: "HomeDetails", 
     routeTemplate: "Home/Detail/{articleId}/{articleVersion}", 
     defaults: new { controller = "Home", action = "Detail", articleId = "0", articleVersion = "0.0" } 
); 

    //routes.MapHttpRoute(
    // name: "DefaultApi", 
    // routeTemplate: "api/{controller}/{id}", 
    // defaults: new { id = RouteParameter.Optional } 
    //); 

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

नियंत्रक:

public class HomeController : Controller 
{ 

    public ViewResult Index() 
    { 
    return View(); 
    } 

    public ViewResult Detail(int articleId, decimal articleVersion) 
    { 
    // does stuff here... 
    return View(model); 
    } 

} 

यूआरएल मैं हिट करने के लिए http://localhost/home/detail/1234/1.2

उत्तर

21

MapHttpRoute मार्गों।

अपने उदाहरण HomeController में मानक Controller (नहीं ApiController) विरासत में, आप पाया जा करने के लिए नियंत्रक के लिए बजाय MapRoute उपयोग करने की आवश्यकता:

routes.MapRoute(
    name: "HomeDetails", 
    url: "Home/Detail/{articleId}/{articleVersion}", 
    defaults: new { controller = "Home", action = "Detail", articleId = 0, articleVersion = 0.0 } 
); 
+3

रवींद्र! बिल्कुल जगह पर। धन्यवाद :) – Nick

+2

... यही कारण है कि त्रुटि संदेश को एक XML दस्तावेज़ के रूप में वापस कर दिया गया था ... ** थोड़ा बेवकूफ महसूस करने से घूमता है ** – Nick

+2

जिसने मेरे लिए दिन को बचाया। मैंने पिछले 2 दिनों में यह पता लगाने की कोशिश की कि क्या हो रहा था। धन्यवाद! –

0

इस तरह हाय कोड परिवर्तन की तरह कुछ हो जाएगा कोशिश कर रहा हूँ। एक वेब एपीआई ApiController इनहेरिट नियंत्रक से

routes.MapHttpRoute(
     name: "HomeDetails", 
     routeTemplate: "{controller}/{action}/{articleId}/{articleVersion}", 
     defaults: new { controller = "Home", action = "Detail", articleId = "0", articleVersion = "0.0" } 
); 
संबंधित मुद्दे

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