可为null的int作为操作参数

本文关键字:操作 参数 int null 可为 | 更新日期: 2023-09-27 18:29:41

在此代码中

public ActionResult Index(int? id)
{
  return View();
}

int? id做什么?

我们也可以用这种格式写吗?

public ActionResult Index()
{
  int id;
  return View();
}

可为null的int作为操作参数

它允许您将参数传递给Action。

如果你有这样指定的路线:

"{controller}/{action}/{id}"

然后,您将能够调用URL YourController/Index/1,并且1将被传递到您的操作中。

int后面的问号表示它是Nullable<int>,也就是说它是可选参数。如果不在URL中,则id将为null

您的备用语法不起作用。

Id是Index操作方法的参数。使用默认路由定义,当请求您的Index操作方法时,url(url段)中具有Id参数值的部分将映射到action方法的Id参数。

例如,对于请求yourSiteName.com/yourControllerName/Index/350,将执行Index操作方法,350将在Id参数中可用,并且可以在方法中访问。

int?表示它是可以为null的int,也就是说该值可以为null。如果不为可为NULL的int参数提供值,则它将为NULL。

就MVC路由而言,这意味着可以像yourControllerName/IndexyourControllerName/Index/23一样使用默认路由定义来访问动作方法。有时,人们会使用它为没有Id值的请求返回List/Index视图,并为传入Id的请求返回特定项目。

因此,在访问该值之前,您应该检查它是否为null。如果它不为null,则可以使用Value属性来获取存储在param中的值。

public ActionResult Index(int? id)
{
  if(id!=null)
  {
   //request came with a value for id param. Let's read it.
    var idValue =id.Value;
   //do something with the IdValue which is an Int       
  }
  else
  {
    //request came without a value for id param
  }
  return View();
}