MVC 3/Razorを初めて使用し、簡単なサイトで作業して基礎を学びます。そのために、私は、/ Home/SignedInAsのページにDropDownListをレンダリングする簡単なビューを作成しました。パーシャルビューではNullReferenceExceptionが発生しますが、同等ではありません。
私のホームコントローラのロジックは次のとおりです。
SignedInAsViewModelは簡単ですpublic class HomeController : Controller
{
public ActionResult SignedInAs()
{
SignedInAsViewModel siavm = new SignedInAsViewModel();
siavm.SignedInAsOptions = db.GetSignedInAsOptions();
return View(siavm);
}
}
:
public class SignedInAsViewModel
{
public SignedInAsViewModel()
{
this.SignedInAsOptions = new List<SignedInAs>();
}
public IEnumerable<SignedInAs> SignedInAsOptions { get; set; }
}
および方法、db.GetSignedInAsOptions()プロパティでSignedInAsオブジェクトのリストを返します。 、IDと名前。
とビュー/ホーム/ SignedInAs.cshtmlで、私が持っている:
@model myMVCApp.Views.SignedInAsViewModel
...
@Html.DropDownList("ddlSignedInAs", new SelectList(Model.SignedInAsOptions, "ID", "Name", selectedValue))
...
し、選択リストには、/ホーム/ SignedInAsで私のページに期待どおりにレンダリングします。
私が本当にやりたいことは、すべてのページの上部にDropDownListをレンダリングすることです。
public class SignedInAsController : Controller
{
public ActionResult ShowSignedInAs()
{
SignedInAsViewModel siavm = new SignedInAsViewModel();
siavm.SignedInAsOptions = GetSignedInAsOptions();
return PartialView(siavm);
}
}
そして、私の_Layout.cshtmlで(私はここにもreturn View(siavm)
を試してみました。):
@model myMVCApp.Views.SignedInAsViewModel
@if (Request.IsAuthenticated)
{
<text><div>@Html.DropDownList("ddlSignedInAs", new SelectList(Model.SignedInAsOptions, "ID", "Name", selectedValue))</div></text>
}
とコントローラ、SignedInAsController:だから、私は部分図、_SignedInAsPartialを作成しました私が持っているすべてのページで使用されています:
@Html.Partial("_SignedInAsPartial")
すべてのページをロードしようとすると、 NullReferenceExceptionとビジュアルデバッガが_SignedInAsPartial.cshtmlで停止する
ブレークポイントがSignedInAsControllerにヒットすることはありません。
私は明らかにここで何かを理解していない、私は見つけることができるすべてを読んだ。しかし、私はそれを理解することはできません。選択リストはページビューではうまく表示されますが、部分ビューでは表示されないのはなぜですか?
ありがとうSatjinder。 これを前後すると、私はMVCの基本に十分な根拠がないことに気がついたので、さまざまな投稿とオンラインウォークスルーを一緒にしようとするのではなく、実際の本を読んでいました。 – Rich