我有像这样的RouteConfig
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index"}
);
}
}
但是当我尝试使用“http://example.com/controllername/action/166699406”时。它得到以下错误。我想要实现的是,我想强制使用id参数。如果它们在url中没有id参数,则它不应该命中路径并且应该显示404.我知道我们可以通过null检查控制器中的参数来实现这一点。有没有办法在路由配置中管理它。
路由表中没有路由与提供的值匹配。
异常详细信息:System.InvalidOperationException:路由表中的路由与提供的值不匹配。
答案 0 :(得分:0)
您应该在web.config中处理此问题,而不是在路由中。
答案 1 :(得分:0)
如果我理解正确,你想为路线添加约束
constraints: new { id = @"([0-9]+)" }
这意味着路由只会在id为数字时匹配,这是强制性的。
完整:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index"},
constraints: new { id = @"([0-9]+)" }
);
请注意,您在问题中提供的路线应符合您当前的规则,因此我会仔细检查您的控制器,操作和拼写,以防某处出现错字。
答案 2 :(得分:0)