2011-08-09 4 views
1

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에서 결코 적중되지 않습니다.

분명히 여기있는 내용을 이해하지 못하고 내가 찾은 모든 것을 읽었습니다. 그러나 나는 그것을 알아낼 수 없다. 선택 목록이 페이지보기에서는 잘 렌더링되지만 부분보기에서는 그렇지 않은 이유는 무엇입니까?

답변

1

모델을 부분 뷰로 전달해야하거나 Html.RenderAction을 사용할 수 있습니다.이 뷰를 다시 보려면 컨트롤러 작업이 필요합니다.

+0

감사합니다. 이 글에서 앞뒤로 지나간 후에 MVC의 기초에 대한 충분한 지식이 부족하다는 것을 깨달았습니다. 그래서 다양한 게시물과 온라인 연습을 함께하기보다는 실제 책을 읽는 것에 의지했습니다. . – Rich

관련 문제