【发布时间】:2012-07-09 20:30:52
【问题描述】:
我不知道为什么我一直在为此苦苦挣扎,但有人可以解释为什么这不起作用吗?
/ 重定向到home 控制器的index 操作。
/gallery/ 抛出 404 not found 错误。
/gallery/index 重定向到gallery 控制器的index 操作。
定义路由时,可以为参数分配默认值。如果 URL 中不包含该参数的值,则使用默认值。您可以通过将字典对象分配给 Route 类的 Defaults 属性来设置路由的默认值。
我不明白这怎么不符合这条规则:
public static void RegisterRoutes(RouteCollection routes)
{
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
对我来说是这样的:
- 如果未定义
controller,请使用Home。 - 如果未定义
action,请使用Index。 - 输入的 URL 包含一个控制器 =
gallery和一个动作不包含在 URL 中,所以它应该转到Index。
我是否遗漏了某些东西,或者这是不必要的混乱和愚蠢?
我一直发现 MVC3 路由存在问题,但我接受了它。然后我开始使用 Rails 和 Node 框架,它们的路由非常简单,所以现在 .NET MVC 只是在它不起作用或让我使用复杂的模式时让我烦恼。
当我浏览到/gallery/index时,我的Gallery控制器、Action和View都已定义并工作,以供参考。
public class GalleryController : Controller
{
public ActionResult Index()
{
return View();
}
}
【问题讨论】:
-
澄清一下,你只定义了这1个路由,默认路由?在它之前没有声明其他路线,并且您没有使用区域?
-
您在所有方面都是正确的。您是否添加了另一条路线?
-
不,我故意贴出整个
RegisterRoutes方法以明确只有默认路由存在。 -
这是在哪个 IIS 中运行的?
-
内置VS2010虚拟服务器。
标签: asp.net-mvc-3 url-routing asp.net-mvc-routing