我正在尝试向constraint
添加controller
。我可能完全错了,但我的理解是,如果route
不匹配,那么不应该调用constructor
方法吗?
这是我的路线:
routes.MapRoute(
"UserProfile",
"UserProfile/{userName}",
new { controller = "UserProfile", action = "Index" },
new { userName = @"[a-zA-Z]+" }
);
所以,我认为这是因为我要求userName
,当我点击网址mywebsite/UserProfile
时,它应该不匹配?如果有人可以帮忙解决route
而不是调用constructor
方法,那么请一些人纠正我的想法,因为userName
遗漏了{{1}}也会很棒。
答案 0 :(得分:0)
如果您只注册了此路由,则控制器将不会被此路由实例化或命中。我假设您正在观察的行为是由于您还离开了默认路由注册,该注册将请求/UserProfile
与UserProfile
控制器和Index
操作匹配:< / p>
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
因此,删除此默认路由,您应该没问题。您的路线定义应如下所示:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"UserProfile",
"UserProfile/{userName}",
new { controller = "UserProfile", action = "Index" },
new { userName = @"[a-zA-Z]+" }
);
}