2013-05-19 4 views
0

뷰 모델 :데이터 뷰 모델에 바인딩되지

public class AdminAddMovieDataBase 
    { 
     public MovieInformation MovieInformation { get; set; } 
     public List<Genre> Genres { get; set; } 
    } 

베이스 페이지 :

<div class="contentWrapper1"> 
    <div class="contentLeft1">Title</div> 
    <div> 
    @Html.TextBoxFor(model => model.MovieInformation.MovieTitle, new { @class = "signupinputnameField", id = "movieTitle" }) </div> 
    </div> 
    <div id="genre"> 
    <div class="contentLeft1">Genre</div> 
    @Html.Partial("_GenrePartialPage", Model.Genres) 
    </div> 

부분 페이지 :

<div class="ContentWrapper1"> 

    <ul><li> 
    @Html.DropDownList("GenreList", new SelectList(Model, "GenreID", "GenreName"), "--Select Genre--", new { @class = "contentRightOption1" }) 
    <a href="#" onclick="$(this).parent().remove();">Delete</a> 
     </li></ul> 
    </div> 

나는 형태의 저장 버튼을 클릭하면 기본 페이지 (여기 샘플 코드에서 제공하지 않음). MovieInformation 모델의 데이터를 가져올 수 있지만 부분 페이지에있는 장르의 데이터는 가져올 수 없습니다. 부분 페이지를 사용하여 뷰 모델을 바인딩 할 수 없습니다. 고맙습니다.

+0

부분 페이지가 viewModel에서 데이터를 가져 오지만 선택한 데이터가 게시시 가져 오지 않습니다 (예 : AdminAddMovieDataBase.Genres가 HttpPost에서 null 임) –

답변

0

보기 모델의 장르 목록은 List<SelectListItem>이어야하며 모델에도 문자열 속성을 포함시켜야합니다. 이 예제에서는 술어 MyGenre라고 부를 것입니다. 그런 다음

@Html.DropDownListFor(model=>model.Genre.MyGenre, model=>model.Genre.GenreList)

그래서 모델에서 첫 번째 속성은 문자열로 사용할 수 있습니다, 두 번째는 SelectListItem의 목록입니다. 양식이 게시되면 문자열에서 선택된 항목을 가져올 수 있습니다.

+0

제안을 시도했지만 같은 일이 발생했습니다. 내가 게시 할 때 Model.Genres에서 데이터가 null이됩니다. SelectList가 아닌 부분 페이지에 List 을 전달했지만 SelectList 항목으로 변환됩니다. –

+0

보기에 중단 점을 넣으면 장르에 데이터가 있습니까? – James

+0

내 문제는 당신이 요구하는 것입니다. GENRE에는 데이터가 없습니다. MovieInformation은 쉽게 바인딩 할 수 있지만 게시시 null을 표시합니다. –

관련 문제