私はMVC Music Store のチュートリアルに取り組んでおり、小さな問題やクエリに遭遇しました。
IDでアルバムを探しています。
var album = db.Albums.Find(id)
これは正常に機能しますが、id が存在しない場合、コントローラーが null モデルをビューに渡すと NullReferenceException が発生します。
これを修正するには2つの方法が考えられます。
方法 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: モデルがビューで null かどうかを確認します。そうである場合は、モデル固有の項目を表示せず、代わりにエラー メッセージを表示します。
@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 の利点はありますか?