2016-12-19 1 views
0

채워진 뷰 모델로 뷰를 렌더링하고 있습니다. Visual Studio의 직접 실행 창은 렌더링 시점에 제목 및 국가가 값을 설정했지만 국가 값만 정확하다는 것을 확인합니다. 제목이 첫 번째 SelectListItem 값으로 되돌려졌습니다.Html.DropDownList 필드가 뷰 모델의 값을 표시하지 않습니다.

드롭 다운의 소스를 전환하면 (둘 다 동일한 도우미를 사용할 수 있음) 어떤 소스를 사용하든 상관없이 Title 속성은 항상 기본값 인 첫 번째 항목으로 돌아갑니다.

대신 @ Html.TextBoxFor ...를 사용하면 값이 올바르게 표시됩니다. 제 질문은 더 많은 도움을주는 것입니다 - 어떤 행동을 일으킬 수 있습니까?

MyViewModel

public string Title {get; set;} 
public string Country {get; set;} 

보기

... 
ViewBag.Title = "Test" 
... 
@Html.DropDownListFor(x => x.Title, CertificateFormHelpers.GenerateTitles(), new {@class = "form-select"}) 

@Html.DropDownListFor(x => x.Country, Countries.All(), new { @class = "form-select" }) 

업데이트 :보기가 충돌하는 속성 이름을했다. 이 선언을 포함하도록 뷰를 업데이트했습니다.

+0

첫 번째 옵션을 선택하면 'Title'값이 옵션 값 중 하나와 정확하게 일치하지 않음을 의미합니다. –

+0

사실 내 이해했습니다. 그러나 단순히 도우미를 전환해도 가치가 일치하더라도 Title은 작동하지 않습니다. 그것은 확실히 일치합니다. – ManxJason

+0

무슨 뜻입니까? 단순히 도우미를 바꾸면 _? 그리고 그들은 일치하지 않습니다. 'Title'의 값이''abc''이고 당신이 생성하는 옵션 중 하나가'value = "abc"'로 선택 될 경우 –

답변

0

제 질문은 그러한 행동을 유발할 수있는 더 많은 도움이됩니다.

이 특별한 경우에 ViewBag에는 'Title'이라는 속성이 있고 내 모델에도 'Title'속성이 있습니다. ViewBag.Title의 값은 드롭 다운 옵션을 채우는 데 사용되는 컬렉션에 존재하지 않으므로 드롭 다운이 해당 컬렉션의 첫 번째 항목으로 기본 설정되는 이유는 무엇입니까?

관련 문제