Asp.net 具有可空参数的MVC动作方法

Asp.net 具有可空参数的MVC动作方法,asp.net,asp.net-mvc,asp.net-mvc-3,razor,routing,Asp.net,Asp.net Mvc,Asp.net Mvc 3,Razor,Routing,我正在使用参数值调用一个操作。但它并没有将参数值指定给动作方法参数 public ActionResult UserDetail(long? userId) { } localhost/Admin/UserDetail/10->10未传递给userId 但是 localhost/Admin/UserDetail/?userId=10->此操作有效 什么原因导致第一个url不工作?有什么帮助吗 更新: 在global.asax中尝试了此操作,但仍不起作用 routes

我正在使用参数值调用一个操作。但它并没有将参数值指定给动作方法参数

    public ActionResult UserDetail(long? userId)
    {

    }
localhost/Admin/UserDetail/10->10未传递给userId

但是

localhost/Admin/UserDetail/?userId=10->此操作有效

什么原因导致第一个url不工作?有什么帮助吗

更新:

在global.asax中尝试了此操作,但仍不起作用

 routes.MapRoute("ExistSiteUser",
              "UserDetail/{userId}",
               new
               {
                   controller = "Admin",
                   action = "UserDetail",
                   // nothing optional 
               }
         );
        routes.MapRoute("NewSiteUser",
             "UserDetail",
              new
              {
                  controller = "Admin",
                  action = "UserDetail",
                  userId = UrlParameter.Optional 
              }
        );

将参数名更改为“id”而不是“userid”,然后重试……这样就可以了

public ActionResult UserDetail(long? id)
{

}

将参数名更改为“id”而不是“userid”,然后重试……这样就可以了

public ActionResult UserDetail(long? id)
{

}

将此用户id替换为id:-

public ActionResult UserDetail(long? id)
    {

    }

将此用户id替换为id:-

public ActionResult UserDetail(long? id)
    {

    }

默认情况下,mvc路由包含一个名为id的路由参数。添加路由以包含userId或仅使用id。@DaveA,您能否给出添加接受userId的新路由的答案?我在global.asax上试过,但不确定我犯了什么错误there@Billa请考虑绿色检查这个答案,如果它为您的目的默认服务,MVC路由容纳1个路径PARAM称为ID。添加路线包括USER ID或只是使用ID。@ DaveA,你能给出一个答案,添加一个新的路线接受USER ID?我在global.asax上试过,但不确定我犯了什么错误there@Billa请考虑绿色检查这个答案如果它服务你的意图认为你需要小写id@Billa请考虑绿色检查这个答案,如果它为您的目的。我认为您需要小写。id@Billa请考虑绿色检查这个答案,如果它为您服务我想你需要小写字母我想你需要小写字母