C# 可为null的int作为操作参数

C# 可为null的int作为操作参数,c#,asp.net-mvc,C#,Asp.net Mvc,在此代码中 public ActionResult Index(int? id) { return View(); } 什么是int?iddo 我们也可以用这种格式写吗 public ActionResult Index() { int id; return View(); } Id是索引操作方法的参数。使用默认路由定义,当请求索引操作方法时,url(url段)中具有Id参数值的部分将映射到操作方法的Idparam 例如,对于请求yourSiteName.com/yourCont

在此代码中

public ActionResult Index(int? id)
{
  return View();
}
什么是
int?id
do

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

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

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

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

int?
表示它是可为null的int,这意味着该值可以为null。如果不为可为null的int参数提供值,则该值将为null

就MVC路由而言,这意味着可以使用默认路由定义访问操作方法,如
yourControllerName/Index
yourControllerName/Index/23
。有时,人们使用它为请求返回一个不带Id值的列表/索引视图,并为请求返回一个带有传入Id的特定项

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

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

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

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

int?
表示它是可为null的int,这意味着该值可以为null。如果不为可为null的int参数提供值,则该值将为null

就MVC路由而言,这意味着可以使用默认路由定义访问操作方法,如
yourControllerName/Index
yourControllerName/Index/23
。有时,人们使用它为请求返回一个不带Id值的列表/索引视图,并为请求返回一个带有传入Id的特定项

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

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

它允许您将参数传递给操作

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

"{controller}/{action}/{id}"
然后您将能够调用URL
YourController/Index/1
,并且
1
将被传递到您的操作中

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


您的备用语法不起作用。

它允许您将参数传递给操作

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

"{controller}/{action}/{id}"
然后您将能够调用URL
YourController/Index/1
,并且
1
将被传递到您的操作中

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


您的备用语法不起作用。

我更改了标题,这样看起来OP就不会像我更改了标题那样尝试搜索和读取可空类型,也不会像您有一个具有
Int
type属性的类并且您没有设置这个属性在你的类对象上,你以后访问它时会得到0,我猜这是这个值类型的默认值。我想我不应该把它和动作方法param context混在一起。如果我没有设置int参数呢?假设它的索引(String somevalue),那么在动作方法中,可以使用String.IsNullOrEmpty(somevalue)检查请求中的值。由于param name不是id,url应该是index?somevalue=abc当您有一个具有
Int
type属性的类,并且您没有在类对象上设置此属性的值时,您在以后访问它时会得到0,我猜这是此值类型的默认值。我想我不应该把它和动作方法param context混在一起。如果我没有设置int参数呢?假设它的索引(String somevalue),那么在动作方法中,可以使用String.IsNullOrEmpty(somevalue)检查请求中的值。由于参数名不是id,url应该是index?somevalue=abcwhat如果我没有输入int参数?比如说它的索引(字符串somevalue),如果我没有输入int参数呢?比如说它的索引(字符串somevalue)