【发布时间】:2010-01-11 23:43:46
【问题描述】:
这应该很简单,但是唉...
我在我的 MVC 2 项目(单个项目区域)中设置了一个管理区域。我创建了几个控制器及其各自的视图文件夹。在 AreaRegistration.RegisterArea 方法中,我已指定我希望默认控制器为“仪表板”:
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Admin_default",
"Admin/{controller}/{action}/{id}",
new { controller = "Dashboard", action = "Index", id = "" }, new string[] { "Admin" }
);
}
如果我导航到 url/Admin/Dashboard,索引会正常显示。不过,我想要的是允许用户转到 url/Admin/ 并查看相同的内容。但是,当我这样做时,我得到“找不到资源”。
我刚刚开始接触 MVC 2 的 Area 实现,我不认为我在做任何过于复杂的事情......有人遇到过同样的问题吗?我是否需要指定单独的路线,也许在根、非区域级别?
【问题讨论】:
-
顺便说一句,MapRoute 调用末尾的字符串数组参数是无关的,我尝试在解决问题的无知尝试中添加它,但由于其余部分没有控制器名称冲突该项目的,我认为在这种情况下它是无用的。
-
还没有。我不得不将项目搁置几天以处理其他优先事项。不过我今晚会再挖一次。在此期间,我只是直接链接到我打算默认的 Area/Controller/Action 路由。
-
@SocialAddict,看看我在下面提供的解决方案。你的情况是相似的还是你只是好奇?
-
这可行,但随后会导致共享视图出现错误,因为它在根而不是区域中查找,找不到解决此问题的整洁方法,有什么想法吗?
-
MVC4 仍然会发生...我有一个名为 v1 的区域,所以我怀疑“admin”这个名称是否有任何冲突,正如您在自己的答案中推测的那样。
标签: asp.net-mvc routing