看書的時候,喜歡去思考,喜歡問自己幾個為什麼,但是天資愚笨,長時間找不到答案,這可如何是好?上天呀,賜給我一個聰明的大腦吧!或者告訴我如何在遇到問題的時候,能快速的解決。這篇部落格不為別的,只是提供一種解決問題的方法,作為程式員,雖然我算不上,源碼可能才是問題的本質。
新建立一個ASP.NET.MVC項目的時候,會有一個預設的路由規則,形式如下:
routes.MapRoute( "Default", // 路由名稱 "{controller}/{action}/{id}", // 帶有參數的 URL new { controller = "Home", action = "Index", id = UrlParameter.Optional } // 參數預設值);
我們知道大括弧裡面的表示預留位置,既然是預留位置,那麼換成其它的是不是也行,當換成
routes.MapRoute( "Default", // 路由名稱 "{action}/{id}", // 帶有參數的 URL new { controller = "Home",action = "LogOn", id = UrlParameter.Optional } // 參數預設值 );
這個是可以的,但是換成下面的就不行,結果出錯。
routes.MapRoute( "Default", // 路由名稱 "{action}/{id}", // 帶有參數的 URL new { action = "LogOn", id = UrlParameter.Optional } // 參數預設值 );
錯誤資訊也提示了,必須有"controller",對於我該的第一種情況,也就是下面的雖然在規則中沒出現,但是預設值中確出現了,也就是說這個其實是還有 “controller”的
routes.MapRoute( "Default", // 路由名稱 "{action}/{id}", // 帶有參數的 URL new { controller = "Home",action = "LogOn", id = UrlParameter.Optional } // 參數預設值 );
決定找到答案,於是反編譯了代碼,看到了自己想要的答案:
同理,Action也是必須出現的。