我正在致力於http://mvcforum.codeplex.com項目。ASP.NET MVC 3路由問題
我們有2個區域,Forum和ForumAdmin。
我有幾個命名的路線,做一個漂亮的URL與論壇/主題標題中的網址:
context.MapRoute("ShowTopic", "Forum/Topic/{id}/{title}", new { controller = "Topic", action = "Index" });
context.MapRoute("ShowForum", "Forum/Forum/{id}/{title}", new { controller = "Forum", action = "Index" });
context.MapRoute("ShowCategory", "Forum/Category/{id}/{title}", new { controller = "Category", action = "Index" });
context.MapRoute(
"Forum_default",
"Forum/{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional },
new string[] { "mvcForum.Web.Areas.Forum.Controllers" }
);
所以這幾乎是按預期工作。當我只是瀏覽論壇,一切工作正常,但是當我需要發佈一個主題(創建主題控制器上的方法),它失敗:
參數字典包含參數 無效項「身份證'的 不可爲空的類型'System.Int32'爲 方法'System.Web.Mvc.ActionResult 索引(Int32,System.String,Int32)'in 'mvcForum.Web.Areas.Forum.Controllers.ForumController' 。 可選參數必須是 參考類型,可爲空的類型,或者將其聲明爲可選參數 。 參數名稱:參數
或多或少歸結爲不能觸及Create方法,但選擇了Index方法。
任何想法是什麼我做錯了?什麼路線我應該/不必得到這個工作?
在此先感謝! 斯蒂恩
這是我是一個有點害怕,那樣我就必須爲每一個動作創建命名路線。 – 2011-05-10 08:02:44
真正的問題是,「ShowTopic」路由具有「Topic」作爲URL的一部分,在這種情況下,它與實際的Controller匹配。現在我想這個解決方案是重寫「ShowTopic」路由到沒有Topic作爲第2部分的東西。 – 2011-05-11 07:39:39