我正在阅读MVC 音乐商店教程,遇到了一个小问题/查询。
我想通过它的 id 找到一张专辑。
var album = db.Albums.Find(id)
但是,如果 id 不存在,这可以正常工作,那么当控制器将空模型传递给视图时,我会收到 NullReferenceException。
我可以想到两种方法来解决这个问题。
方法1:在控制器中检查null,如果为null,则显示不同的视图/重定向到不同的操作,例如索引页面或专用错误页面/404未找到页面。
//
// GET: /Store/Details/4
public ActionResult Details(int? id)
{
var album = db.Albums.Find(id);
if (album == null) return RedirectToAction("Index");
else return View(album);
}
方法 2:检查视图中的模型是否为空,如果是,则不显示模型特定项,而是显示错误消息。
@model MvcMusicStore.Models.Album
@{
ViewBag.Title = "Details";
}
@if (Model == null)
{
<h2>That album doesn't exist</h2>
}
else
{
<h2>Details: @Model.Title</h2>
}
问题:有没有其他方法/最佳实践方法来处理这个问题?方法 1 与方法 2 相比有什么优势吗?