Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Asp.net MVC4强制路由参数_C#_Asp.net_Asp.net Mvc_Asp.net Mvc 4 - Fatal编程技术网

C# Asp.net MVC4强制路由参数

C# Asp.net MVC4强制路由参数,c#,asp.net,asp.net-mvc,asp.net-mvc-4,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 4,我有一个这样的路线图 public class RouteConfig { public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( name: "Default", url: "{controller}/

我有一个这样的路线图

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"}
        );
    }
}
但当我尝试使用“”时。它正在获取下面的错误。我试图实现的是,我想使id参数成为必需的。如果他们在url中没有id参数,它不应该命中路由,应该显示404。我知道我们可以通过空检查控制器中的参数来实现这一点。有没有办法在route config本身中进行管理

路由表中没有与提供的值匹配的路由

异常详细信息:System.InvalidOperationException:路由表中没有与提供的值匹配的路由


您应该在web.confing中处理此问题,而不是在路由中

<customErrors mode="On" defaultRedirect="/error/default">
  <error statusCode="403" redirect="/error/restricted"/>
  <error statusCode="404" redirect="/Default/DefaultRoute"/>
  <error statusCode="500" redirect="/error/problem"/>
</customErrors>

如果我理解正确,您希望向管线添加约束

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]+)" }
        );

请注意,您在问题中给出的路线应该与您当前的规则相匹配,因此我会仔细检查您的控制器、操作和拼写,以防在某个地方出现拼写错误。

您可以参考以下帖子:


我尝试了此方法,但得到了相同的错误,当我尝试访问时,我猜该url有问题,请尝试编写一个简单的测试来验证您的路由: