سؤال

أنا جديدة على MVC (و ASP.Net التوجيه).أنا أحاول أن خريطة *.aspx إلى وحدة تحكم يسمى PageController.

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

لا قانون فوق الخريطة *.aspx إلى PageController?عند تشغيل هذا النوع في أي .صفحة aspx أحصل على الخطأ التالي:

المراقب path '/صفحة.aspx' لا يمكن العثور عليه أو لا تنفذ IController واجهة.اسم المعلمة:controllerType

هل هناك شيء أنا لا أفعل هنا ؟

هل كانت مفيدة؟

المحلول

لقد أجبت عن سؤالي.كان الطرق المؤدية إلى الوراء (الافتراضي هو الصفحة أعلاه).

نعم, لديك لوضع جميع مخصص الطرق أعلاه المسار الافتراضي.

لذلك هذا يأتي بنا إلى السؤال التالي...كيف "الافتراضي" الطريق مباراة (أنا نفترض أنهم استخدام التعابير العادية هنا) "صفحة" الطريق ؟

المسار الافتراضي مباريات على أساس ما نسميه الاتفاقية خلال التكوين.سكوت غوثري يفسر ذلك بشكل جيد في أول بلوق وظيفة على ASP.NET MVC.أنا أنصح أن تقرأ من خلال ذلك و أيضا له وظائف أخرى.نضع في اعتبارنا أن هذه تم نشرها على CTP وإطار قد تغير.يمكنك أيضا العثور على شبكة الإنترنت يلقي على ASP.NET MVC على asp.net الموقع من قبل سكوت Hanselman.

نصائح أخرى

لقد أجبت عن سؤالي.كان الطرق إلى الوراء (افتراضي أعلى الصفحة).وفيما يلي الترتيب الصحيح.لذلك هذا يأتي بنا إلى السؤال التالي...كيف "الافتراضي" الطريق مباراة (أفترض أنها تستخدم التعبيرات العادية هنا) "صفحة" الطريق ؟

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
        );

على واحدة من روب Conery MVC واجهة قطات للشاشة, ، وقال انه واجه هذه المسألة بالضبط.إنه في حوالي 23 دقيقة مارك إذا كنت مهتما.

غير متأكد من كيفية تحكم يبدو الخطأ يبدو لافتا إلى أنه لا يمكن العثور على وحدة تحكم.هل يرث من تحكم بعد إنشاء PageController الصف ؟ هو PageController يقع في وحدات تحكم الدليل ؟

هنا هو بلدي الطريق في العالم.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.");
        }
    }
}
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
}

سجل الطريق لجميع aspx

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

و يمكنك اختبار طرق من قبل MvcRouteVisualizer

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top