2013-04-12 30 views
0

我有經典的默認ASP.NET MVC路線:首頁/索引找不到。我不能使用約束嗎?

System.Web.Routing.RouteTable.Routes.MapRoute(
     "Default", 
     "{controller}/{action}/{id}", 
     new { controller = "Home", action = "Index", id = UrlParameter.Optional }, 
); 

因爲我想有一個區域內的另一個HomeController中添加以下:

System.Web.Routing.RouteTable.Routes.MapRoute(
     "Default", 
     "{controller}/{action}/{id}", 
     new { controller = "Home", action = "Index", id = UrlParameter.Optional }, 
     typeof(MVCSite.Controllers.HomeController).Assembly 
); 

所以這條路線只對根主控制器。

但是,當我用這個網站開始我得到一個404錯誤。

這是爲什麼?我不能指定這個約束嗎?

謝謝!

+0

從AreaRegistration繼承的類並覆蓋RegisterArea()方法? – Makotosan

+0

不,實際上我目前沒有任何區域。但是我會添加一個HomeController。所以我只是在添加區域之前添加了約束。我得到的404錯誤...不知道爲什麼 –

+0

如果我使用構造函數接受String []命名空間並使用新的String [] typeof(MVCSite.Controllers.HomeController).Namespace,那麼它工作正常。不知道爲什麼我不能使用約束。 –

回答

0

我可以用這個來解決:

RouteTable.Routes.MapRoute(
    "Default", 
    "{controller}/{action}/{id}", 
    new { controller = "Home", action = "Index", id = UrlParameter.Optional }, 
    new String[] { typeof(HomeController).Namespace 
}); 

謝謝你有, 米格爾