[英]ASP.NET MVC Routes
我可以看到一個可以使這段代碼編譯的示例嗎?
public IEnumerable<RouteBase> Routes
{
get
{
return new List<Route>()
{
new Route(...)
}
}
}
如果RouteCollection.MapRoute()
不存在,該怎么辦?
我試圖讓我的控制器負責映射路由,而不是Global.asax.cs。 public IEnumerable<RouteBase> Routes
是我的控制器的成員。 如果Controller負責路由,則通過在Global.asax.cs
中的routes.MapRoute()
中使用單獨的硬編碼URL來斷開路由耦合是一個壞主意。
在回應哈維先生時:
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
RouteTable.Routes.Include(new RootController());
}
}
public static class RouteCollectionExtension
{
public static RouteCollection Include(this RouteCollection routes, IRoutedController controller)
{
foreach (var route in controller.Routes)
{
routes.Add(route);
}
return routes;
}
}
和:
public class RootController : Controller, IRoutedController
{
public ActionResult Index()
{
ViewData["Message"] = "Welcome to ASP.NET MVC!";
return View();
}
public IEnumerable<RouteBase> Routes
{
get
{
return new List<Route>()
{
new Route("{controller}/{action}/{id}", ...?!?)
};
}
}
}
在這篇文章中嚇到我的一行是以下內容
我正在嘗試讓我的控制器負責映射路線
asp.net mvc背后的整個想法是明確的關注點分離。 這將殺死控制器的可測試性,因為控制器不僅不再控制,而且還干預路由。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.