2014-12-18 3 views
0

작성 템플릿을 사용하여 작성된보기에서 drodownlistfor가 있으며 완전히 정상적으로 작동합니다. 사용자는 옵션을 선택하고 아무런 문제없이 레코드를 추가 할 수 있습니다.DropdownListFor는 편집자 템플리트의 레코드에 값을 표시하지 않습니다.

사용자가 만든 레코드의 값을 편집 할 수있는보기를 만들 때 드롭 다운 목록에 전달 된 특정 모델의 값이 표시되지 않는 것이 문제입니다. 나는 이것을 시도했다

@Html.DropDownListFor(m => m.GlobalMaterialId, ViewBag.MetalIds as SelectList,Model.MaterialName) 

이것은 페이지가로드 될 때 드롭 다운 목록에 값을 표시하지만 그저 환상이다. 사용자가이 항목을 터치하지 않고 다른 필드에서 값을 변경하고 저장하면 레코드는 레코드의 항목이 아닌 드롭 다운 목록 항목의 첫 번째 값으로 저장됩니다. 따라서 동일한 값을 유지하려면 사용자가 편집 뷰를로드 할 때마다 항목을 수동으로 선택해야합니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? 도와주세요. 감사합니다. 건배!

답변

1

"Model.MaterialName"을 마지막 매개 변수로 사용하여 다음과 같이 표시하십시오. DropDownListFor를 사용하면 선택한 값을 전달할 필요가 없으며 모델의 값으로 자동 설정됩니다.

@Html.DropDownListFor(m => m.GlobalMaterialId, ViewBag.MetalIds as SelectList) 
+0

안녕하세요, 대신 ViewData에서 값을 받으면 어떻게해야합니까? 표시 값이 다른 엔티티에 있기 때문입니다. 이 시점에서 뷰 모델을 사용하고 싶지 않습니다. @ Html.DropDownListFor (m => m.GlobalMaterialId, ViewBag.MetalIds를 SelectList, ViewData [ "selectedOption"]. ToString()) –

+0

@RandikaWijekoon. 'GlobalMaterialId' 속성의 값이 여러분의 옵션 중 하나의 값과 일치하면 모델 바인딩이 작동하는 방식으로 선택됩니다. 뷰를 전달하기 전에 컨트롤러에'GlobalMaterialId'를 설정해야합니다. –

+0

감사! 건배! –

관련 문제