C# ASP.NET MVC创建方法null int

C# ASP.NET MVC创建方法null int,c#,asp.net-mvc,asp.net-mvc-5,C#,Asp.net Mvc,Asp.net Mvc 5,嗨,我的create方法收到一个int,我怎么能允许它为null?所以我有时可以在不使用int的情况下使用这个方法 public ActionResult Create(int id) { var model = new Job { IncidentID = id }; ViewBag.ActionCode = new SelectList(db.ActionTypes, "ActionCode", "ActionCode"); r

嗨,我的create方法收到一个int,我怎么能允许它为null?所以我有时可以在不使用int的情况下使用这个方法

   public ActionResult Create(int id)
    {
        var model = new Job { IncidentID = id };
        ViewBag.ActionCode = new SelectList(db.ActionTypes, "ActionCode", "ActionCode");

        return View(model);
    }
显然我试过了

(int ? id)
但是在这里它不快乐,因为它不能转换int?要在此处输入,请执行以下操作:

var model = new Job { IncidentID = id };
试试这个

public ActionResult Create(int? id)
{
    var model = new Job { IncidentID = id.GetValueOrDefault(0) };
    //or var model = new Job { IncidentID = (int.parse(id) };
    ViewBag.ActionCode = new SelectList(db.ActionTypes, "ActionCode", "ActionCode");

    return View(model);
}
GetValuerDefault(0)如果id没有值或为空,则帮助分配零

或 试试这个


只需检查
id
是否有值,并且仅当它有以下值时才分配
IncidentID

public ActionResult Create(int? id)
{
    var job = new Job();
    if (id.HasValue)
        job.IncidentID = id.Value;

    ViewBag.ActionCode = new SelectList(db.ActionTypes, "ActionCode", "ActionCode");
    return View(job);
}
可以使用int作为方法参数
Nullable
有一个
HasValue
方法,用于检查是否已将值分配给Nullable变量。如果返回true,则使用
Value
属性获取变量的值

public ActionResult Create(int? id)
{
  var model=new Job();
  if(id.HasValue)
  {
    model.IncidentID=id.Value;
  }
  //to do :return something
}

这会给你一个编译器错误,如果你在网上搜索它,你会得到答案:使用
id.Value
。当
id
没有通过时,应该给
IncidentID
分配什么?你必须更改
class Job
int?
上的
IncidentID属性。我不是100%同意你的要求,而是同意必须支持空值,或者您必须先将id转换为非空值,然后才能进行赋值。@Sergey Berezovskiy用户输入不会定义任何包含的内容。@Mike Cheel暂时可以为null,但在写入数据库时不可以为null。您如何知道在id未传递的情况下应分配
0
?我将添加GetValuerDefault的重载,其中可以指定默认值。我已经更新了我的答案,盖伊,我将删除否决票,但这仍然是一个猜测。如果id未通过,OP可能不需要创建新作业。我知道您想帮助OP,但OP没有提供足够的信息来回答他的问题。你的回答说明了这一点,但这对OP没有帮助。@Sergey的问题必须由OP回答才能正确回答这个问题,这不仅仅是关于作业。此外,考虑投票关闭作为复制,而不是给出一个答案已经存在很多次。我已经这样做,先生,请参阅我的。answer@RameshRajendran不,你没有。您正在分配
0
Yes
id.HasValue
为false,则我分配了0。@RameshRajendran是否需要我向您解释差异?好的,先生。我明白了。谢谢,先生,我已经这么做了,请看我的回答
public ActionResult Create(int? id)
{
  var model=new Job();
  if(id.HasValue)
  {
    model.IncidentID=id.Value;
  }
  //to do :return something
}