【问题标题】:MVC Action Method with nullable parameter具有可为空参数的 MVC 操作方法
【发布时间】:2013-03-13 02:22:45
【问题描述】:

我正在使用参数值调用一个动作。但它没有将参数值分配给动作方法参数。

    public ActionResult UserDetail(long? userId)
    {

    }

localhost/Admin/UserDetail/10 --> 10 没有传递给 userId

但是

localhost/Admin/UserDetail/?userId=10 --> 这可行

是什么导致第一个网址不起作用?有什么帮助吗?

更新:

在 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 
              }
        );

【问题讨论】:

  • 默认情况下,mvc 路由包含 1 个称为 id 的路由参数。添加路由以包含 userId 或仅使用 id。
  • @DaveA,您能否给出添加接受userId 的新路由的答案?我在 global.asax 中尝试过,但不确定我在那里犯了什么错误
  • @Billa 如果它符合您的目的,请考虑绿色检查此答案

标签: asp.net asp.net-mvc asp.net-mvc-3 razor routing


【解决方案1】:

将参数名称更改为“id”而不是“userid”,然后尝试....它应该可以工作

public ActionResult UserDetail(long? id)
{

}

【讨论】:

  • 我认为你需要小写的 id
【解决方案2】:

将此用户 ID 替换为 id :-

public ActionResult UserDetail(long? id)
    {

    }

【讨论】:

  • 我认为你需要小写的 id
  • @Billa 如果它符合您的目的,请考虑绿色检查此答案。
猜你喜欢
  • 1970-01-01
  • 2014-02-21
  • 2013-02-27
  • 1970-01-01
  • 1970-01-01
  • 2014-03-01
  • 1970-01-01
  • 2016-05-28
  • 2019-01-26
相关资源
最近更新 更多