ili*_*rvg 14 c# asp.net-mvc asp.net-mvc-4
我试图在我的下拉列表中允许空值,在我的数据库表中,我为该特定字段设置了允许空值,但是当我运行代码时,我得到错误,说"可以为空的对象必须有值",我想问题可能出在ModelState中.
调节器
[HttpPost]
public ActionResult Edit(Student student)
{
if (ModelState.IsValid)
{
db.Entry(student).State = EntityState.Modified;
db.SaveChanges();
Loan w = new Loan()
{
StudentID = student.StudentID,
ISBN = student.ISBN.Value,
};
db.Loans.Add(w);
db.SaveChanges();
return RedirectToAction("Index");
}
ViewBag.ISBN1 = new SelectList(db.Books, "ISBN", "Titulli", student.ISBN);
return View(student);
}
Run Code Online (Sandbox Code Playgroud)
Ser*_*kiy 20
在尝试获取可以为空的对象的值时,您会收到此错误,该对象没有值.如果Loan.ISBN
property不可为空,那么您应该为该属性提供默认值
ISBN = student.ISBN.HasValue ? student.ISBN.Value : defaultValue
// or ISBN = student.ISBN ?? defaultValue
// or ISBN = student.ISBN.GetValueOrDefault()
Run Code Online (Sandbox Code Playgroud)
如果Loan.ISBN
属性可以为空,那么只需在student.ISBN
不访问Value
可空类型的情况下进行分配
ISBN = student.ISBN
Run Code Online (Sandbox Code Playgroud)
当您尝试访问when 类型为 false的Value
属性时,会发生此异常。请参阅MSDN 上的可空类型。所以首先检查这一行Nullable
HasValue
ISBN = student.ISBN.Value
Run Code Online (Sandbox Code Playgroud)
看看是否ISBN
不为空。您可能希望将此行更改为
ISBN = student.ISBN.GetValueOrDefault();
Run Code Online (Sandbox Code Playgroud)
使用coalesce运算符执行相同任务的最短方法,如下所示:
ISBN = student.ISBN ?? defaultValue;
Run Code Online (Sandbox Code Playgroud)
合并运算符的工作方式如下:如果第一个值(左侧)为空,则C#计算第二个表达式(右侧).
归档时间: |
|
查看次数: |
43993 次 |
最近记录: |