最近我遇到了这个问题:
我有来自RouteConfig的这条路线
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"",
"{controller}/{action}/{productName}",
new
{
action = "Show",
productName = "aaaa"
}
);
}
现在,他们需要添加路由以确保所有不再存在或已更改ID的产品将显示在产品中。
推荐的解决方案是:
routes.MapRoute(
"Product",
"Product/{action}/{productName}",
new { action = "Show", productName = "aaa" }
);
但是路由的默认值中没有控制器,它将抛出
的异常匹配的路线不包含“控制器”路线值 是必需的。
因此可以定义具有默认路由但未指定控制器的路由吗?
答案 0 :(得分:0)
Stephen是正确的,没有指定控制器就无法建立路线。但是,可以使用默认控制器值,而不是传递URL中{controller}
的值。
routes.MapRoute(
"Product",
"Product/{action}/{productName}",
new { controller = "Product", action = "Show", productName = "aaa" }
);
此外,您应该注意如何指定其他默认值。您在此处定义的内容是action
和productName
的可选值,默认为您在defaults
中指定的值。
因此,以下网址将起作用:
/Product
/Product/Show
通常,制作一个"默认"没有任何意义。产品。将action
和productName
纳入网址中的必需参数会更有意义。
routes.MapRoute(
"Product",
"Product/{action}/{productName}",
new { controller = "Product" }
);