एएसपी.NET एमवीसी मार्ग मैपिंग

मैं एमवीसी (और एएसपी.Net रूटिंग) के लिए नया हूँ। मैं * .aspx को PageController नामक नियंत्रक को मैप करने का प्रयास कर रहा हूं।

routes.MapRoute(
   "Page",
   "{name}.aspx",
   new { controller = "Page", action = "Index", id = "" }
);

नक्शा * .aspx से ऊपर कोड कोड PageController नहीं होगा? जब मैं इसे चलाता हूं और किसी भी .aspx पृष्ठ में टाइप करता हूं तो मुझे निम्न त्रुटि मिलती है:

पथ '/Page.aspx' के लिए नियंत्रक नहीं मिला या यह IController इंटरफ़ेस को लागू नहीं करता है।   पैरामीटर नाम: नियंत्रक टाइप

क्या मैं कुछ ऐसा नहीं कर रहा हूं?

0
ro fr bn

5 उत्तर

मैंने अभी अपने प्रश्न का उत्तर दिया। मेरे पास मार्ग पीछे थे (डिफ़ॉल्ट पृष्ठ से ऊपर था)। नीचे सही क्रम है। तो यह अगला प्रश्न उठाता है ... "डिफ़ॉल्ट" मार्ग मिलान (मुझे लगता है कि वे नियमित अभिव्यक्तियों का उपयोग कैसे करते हैं) "पृष्ठ" मार्ग कैसे करते हैं?

routes.MapRoute(
            "Page",
            "{Name}.aspx",
            new { controller = "Page", action = "Display", id = "" }
        );

        routes.MapRoute(
            "Default",                                             //Route name
            "{controller}/{action}/{id}",                          //URL with parameters
            new { controller = "Home", action = "Index", id = "" } //Parameter defaults
        );
0
जोड़ा

रॉब कॉनरी के एमवीसी स्टोरफ्रंट में से एक पर स्क्रीनकास्ट , वह इससे मुकाबला करता है सटीक मुद्दा यदि आप रुचि रखते हैं तो यह लगभग 23 मिनट के निशान पर है।

0
जोड़ा

यह सुनिश्चित नहीं है कि आपका नियंत्रक कैसा दिखता है, त्रुटि इस तथ्य को इंगित करती है कि यह नियंत्रक नहीं ढूंढ सकता है। क्या आपने पेजकंट्रोलर क्लास बनाने के बाद नियंत्रक से वंचित किया था? क्या नियंत्रक निर्देशिका में स्थित पेज नियंत्रक है?

Global.asax.cs में मेरा मार्ग यहां दिया गया है

routes.MapRoute(
    "Page", 
    "{Page}.aspx", 
    new { controller = "Page", action = "Index", id = "" }
);

यहां मेरा नियंत्रक है, जो नियंत्रक फ़ोल्डर में स्थित है:

using System.Web.Mvc;

namespace MvcApplication1.Controllers
{
    public class PageController : Controller
    {
        public void Index()
        {
            Response.Write("Page.aspx content.");
        }
    }
}
0
जोड़ा

मैंने अभी अपने प्रश्न का उत्तर दिया। मैंने लिया   मार्ग पीछे की तरफ (डिफ़ॉल्ट था   उपरोक्त पृष्ठ)।

हाँ, आपको डिफ़ॉल्ट मार्ग से ऊपर सभी कस्टम मार्गों को रखना होगा।

तो यह अगला प्रश्न लाता है ...   "डिफ़ॉल्ट" मार्ग मिलान कैसे करता है (i   मान लें कि वे नियमित अभिव्यक्तियों का उपयोग करते हैं   यहां) "पृष्ठ" मार्ग?

कॉन्फ़िगरेशन पर कन्वेंशन को कॉल करने के आधार पर डिफ़ॉल्ट मार्ग मिलान। स्कॉट गुथरी एएसपी.नेट एमवीसी पर अपने पहले ब्लॉग पोस्ट में अच्छी तरह से बताते हैं। मैं अनुशंसा करता हूं कि आप इसे और उसके अन्य पदों के माध्यम से पढ़ लें। ध्यान रखें कि इन्हें पहले सीटीपी के आधार पर पोस्ट किया गया था और ढांचा बदल गया है। आप स्कॉट हंसेलमैन द्वारा एएसपीनेट साइट पर एएसपी.नेट एमवीसी पर वेब कास्ट भी पा सकते हैं।

0
जोड़ा
public class AspxRouteConstraint : IRouteConstraint
{
    #region IRouteConstraint Members

    public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection)
    {
        return values["aspx"].ToString().EndsWith(".aspx");
    }

    #endregion
}

सभी एएसपीएक्स के लिए मार्ग पंजीकृत करें

  routes.MapRoute("all", 
                "{*aspx}",//catch all url 
                new { Controller = "Page", Action = "index" }, 
                new AspxRouteConstraint() //return true when the url is end with ".aspx"
               );

और आप मार्गों का परीक्षण MvcRouteVisualizer द्वारा कर सकते हैं

0
जोड़ा