0
我可以看到一個能夠編譯這段代碼的例子嗎?ASP.NET MVC路由
public IEnumerable<RouteBase> Routes
{
get
{
return new List<Route>()
{
new Route(...)
}
}
}
如果RouteCollection.MapRoute()
不存在,您會怎麼做?
我想把我的控制器負責映射路由,而不是Global.asax.cs。 public IEnumerable<RouteBase> Routes
是我的控制器的成員。如果控制器負責路由,則通過使用中的單獨硬編碼URL在Global.asax.cs
中解耦路由是個壞主意。
在回答哈維先生:
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}", ...?!?)
};
}
}
}
這不是雞和雞蛋的問題嗎?如果控制器方法從不執行(路由引擎執行控制器方法,因此至少需要一條現有路由來執行此操作),它將如何設置路由? – 2010-04-23 05:00:31
也許吧。 :)## – MVCDummy09 2010-04-23 05:09:00
不知道該編輯是否針對我。控制器不負責路由,路由引擎是。我很佩服你的韌性,但你仍然沒有解釋如何執行控制器方法,所以你可以設置一些路由,如果路由引擎沒有預定義的路由,因此無法執行控制器方法。 – 2010-04-23 05:10:07