我正在致力于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