我看到一个典型的问题。
从注册自定义路由中,我正在这样调用控制器方法:
protected override void RegisterCustomRoutes(RouteCollection rots, IProuteProvider rotProvider)
{
rotProvider.MapRoute(rots,null, "SignIn",new {Controller = "Layout", Action = "SignIn"});
----------
----------
}
在同一项目中,该方法中存在控制器类。
但是,当我试图通过“ F11”进入控制器内部时。在另一个页面/文件“未找到源”中,其显示为错误
RouteProvider.cs not found.
You need to find RouteProvider.cs to view the source for the current call stack frame.
我认为,这是由于自定义路线。理想情况下,由于控制器源代码存在于同一解决方案/项目中,因此应该路由至正确的控制器方法。但是,它不会发生吗?
是否可以将其指向控制器方法进行调试? 谢谢。
答案 0 :(得分:0)
创建一个名为CustomRouteConstraint的类,该类将实现IRouteConstraint接口,就像这样
public class CustomRouteConstraint : IRouteConstraint
{
public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection)
{
return true;
}
}
在RouteConfig中将自定义路由约束注册为
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
var constraintsResolver = new DefaultInlineConstraintResolver();
constraintsResolver.ConstraintMap.Add("CustomRoute", typeof(CustomRouteConstraint));
routes.MapMvcAttributeRoutes(constraintsResolver);
现在在您的控制器中将其用作
[Route("MvcTest/other/{name:CustomRoute}")]
public ActionResult OtherPage(string name)
{
return View();
}