我不知道爲什麼我經常爲此而鬥爭,但有人可以解釋爲什麼這不起作用?.NET MVC3路由 - 爲什麼這麼混亂?
/
重定向到home
控制器的index
動作。
/gallery/
拋出404找不到錯誤。
/gallery/index
重定向到gallery
控制器的index
動作。
當你定義的路由,你可以指定一個參數的默認值。如果該參數的值未包含在URL中,則使用默認值。通過將字典對象分配給Route類的Defaults屬性,可以爲路由設置默認值。
我不明白這是如何不遵守這條規則:
public static void RegisterRoutes(RouteCollection routes)
{
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
對我來說,有這麼一句話:
- 如果沒有定義
controller
,使用Home
。 - 如果未定義
action
,請使用Index
。 - 輸入的URL包含一個控制器=
gallery
,並且動作未包含在URL中,因此它應該轉到Index
。
我錯過了什麼或這種不必要的混亂和愚蠢?
我一直髮現MVC3路由有問題,但接受它。然後我開始使用Rails和Node框架,並且它們具有可笑的簡單路由選擇,所以現在當.NET MVC無法正常工作或使我使用複雜模式時,它就會讓我惱火。
如果有人詢問,我的圖庫控制器,動作和視圖全部定義並適用於當我瀏覽/gallery/index
時的參考。
public class GalleryController : Controller
{
public ActionResult Index()
{
return View();
}
}
要澄清,你只有這1個路由定義,默認路由?沒有其他路線宣佈之前,你沒有使用區域? – danludwig 2012-07-09 21:05:19
你在所有方面都是正確的。你有沒有添加另一條路線? – Tyrsius 2012-07-09 21:05:27
不,我故意發佈了整個'RegisterRoutes'方法來清除只有默認路由。 – Terry 2012-07-09 22:32:33