我有一個Products
控制器與Details
的行動,都有一個ID和彈頭的作品如下:ASP.NET MVC:路由需要準確URL工作
routes.MapRoute(
"ProductDetails", // Route name
"{controller}/{action}/{id}/{title}", // URL with parameters
new { controller = "Products", action = "Details", id = "", title = UrlParameter.Optional } // Parameter defaults
);
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
的網址:localhost/Products/Details/1
和localhost/Products/Details/1/my-slug
作品。 但是,將ProductDetails
路線放在頂部打破了我的整個應用程序。要進入我的主頁,我的網址必須如下所示:localhost/Home/Index
。
localhost/Home
或此事的任何控制器不起作用。它要求在這些操作中有一個可爲空的參數。
錯誤:
The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Details(Int32)' in 'MyProject.Controllers.ProductsController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter.
我剛剛那樣做了。它的工作,謝謝。爲什麼?你能解釋一下這2條路線是如何工作的嗎? – 2010-12-14 18:58:12
由於第二個路由localhost/Home與您定義的路由定義相匹配,並且路由路由localhost/Home沒有URL的id組件,所以您會收到異常,因爲MVC框架試圖分配null因爲缺少ID參數和Int32不能分配一個空值。 – Chandu 2010-12-15 01:39:56