MVC 3/Razor를 처음 접했고 간단한 사이트에서 기초를 배울 수 있습니다. 이를 위해 DropDownList를/Home/SignedInAs 페이지에 렌더링하는 간단한보기를 만들었습니다.부분 뷰의 NullReferenceException, "equivalent"뷰가 없음
내 홈 컨트롤러의 논리는입니다 :
public class HomeController : Controller
{
public ActionResult SignedInAs()
{
SignedInAsViewModel siavm = new SignedInAsViewModel();
siavm.SignedInAsOptions = db.GetSignedInAsOptions();
return View(siavm);
}
}
SignedInAsViewModel 간단한입니다 :
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를 모든 페이지의 맨 위에 렌더링하는 것입니다.
@model myMVCApp.Views.SignedInAsViewModel
@if (Request.IsAuthenticated)
{
<text><div>@Html.DropDownList("ddlSignedInAs", new SelectList(Model.SignedInAsOptions, "ID", "Name", selectedValue))</div></text>
}
그리고 컨트롤러, SignedInAsController : (. 나뿐만 아니라 여기 return View(siavm)
을 시도했다) 그래서, 나는 부분보기, _SignedInAsPartial 만들어
public class SignedInAsController : Controller
{
public ActionResult ShowSignedInAs()
{
SignedInAsViewModel siavm = new SignedInAsViewModel();
siavm.SignedInAsOptions = GetSignedInAsOptions();
return PartialView(siavm);
}
}
이
을 그리고 내 _Layout.cshtml에서 내가 가지고있는 모든 페이지에서 사용 :
@Html.Partial("_SignedInAsPartial")
지금 어떤 페이지를로드하려고하면 NullReferenceException 및 시각적 인 디버거가 _SignedInAsPartial.cshtml에서 중지됩니다.
중단 점이 SignedInAsController에서 결코 적중되지 않습니다.
분명히 여기있는 내용을 이해하지 못하고 내가 찾은 모든 것을 읽었습니다. 그러나 나는 그것을 알아낼 수 없다. 선택 목록이 페이지보기에서는 잘 렌더링되지만 부분보기에서는 그렇지 않은 이유는 무엇입니까?
감사합니다. 이 글에서 앞뒤로 지나간 후에 MVC의 기초에 대한 충분한 지식이 부족하다는 것을 깨달았습니다. 그래서 다양한 게시물과 온라인 연습을 함께하기보다는 실제 책을 읽는 것에 의지했습니다. . – Rich