ASP.Net MVC رسم الخرائط الطريق
-
08-06-2019 - |
سؤال
أنا جديدة على 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