如何解决 ASP.NET MVC 中的空引用异常
How to resolve null reference exception in ASP.NET MVC
这是我得到空引用异常的地方
@Html.DropDownListFor(model => model.Movie.GenreId, new SelectList(Model.Genres, "Id", "Name"),"Select", new { @class = "form-control" })
我有一个MovieViewModel
,在我的控制器中构建创建逻辑并将其呈现到视图之前,我通过它传递了我的流派和电影模型
// GET: Movies/Create
public ActionResult Create()
{
var genres = _DbContext.Genres.ToList();
var ViewModel = new MovieViewModel
{
Genres = genres
};
return View(ViewModel);
}
// POST: Movies/Create
[HttpPost]
public ActionResult Create(Movie movie)
{
// TODO: Add insert logic here
try
{
// TODO: Add insert logic here
_DbContext.Movies.Add(movie);
_DbContext.SaveChanges();
return RedirectToAction("Index");
}
catch
{
return View();
}
}
空引用异常发生在假定值存在时,但它是 null
。当您构建下拉列表时,将假定出现在该控件中的元素具有您指定的 Id 和 Name 值。由于未满足该期望(名称可能为空),您会收到此错误。您应该使用过滤器以避免将空值加载为名称,或者使用默认值。
这是我得到空引用异常的地方
@Html.DropDownListFor(model => model.Movie.GenreId, new SelectList(Model.Genres, "Id", "Name"),"Select", new { @class = "form-control" })
我有一个MovieViewModel
,在我的控制器中构建创建逻辑并将其呈现到视图之前,我通过它传递了我的流派和电影模型
// GET: Movies/Create
public ActionResult Create()
{
var genres = _DbContext.Genres.ToList();
var ViewModel = new MovieViewModel
{
Genres = genres
};
return View(ViewModel);
}
// POST: Movies/Create
[HttpPost]
public ActionResult Create(Movie movie)
{
// TODO: Add insert logic here
try
{
// TODO: Add insert logic here
_DbContext.Movies.Add(movie);
_DbContext.SaveChanges();
return RedirectToAction("Index");
}
catch
{
return View();
}
}
空引用异常发生在假定值存在时,但它是 null
。当您构建下拉列表时,将假定出现在该控件中的元素具有您指定的 Id 和 Name 值。由于未满足该期望(名称可能为空),您会收到此错误。您应该使用过滤器以避免将空值加载为名称,或者使用默认值。