2012-08-24 3 views
8

그래서 나는 다음과 같은 (의사 코드)가 항목을 채우고 이미 선택된 항목을 표시했습니다. 그러나보기로 이동하면 옵션이 선택됨으로 표시되지 않습니다.MVC C#을 html.dropdownlist 및 viewbag

제 질문은, 항목을 전달하기 위해 뷰 백을 사용할 수 있습니까? 아니면 다른 매체를 사용해야합니까? 내가 그것을 그렇게 사용하면 옵션에서 선택된 플래그를 제거합니다. 이 같은

+0

컨트롤러에서 중단 점을 표시하고'list'의 적어도 하나의 항목에'Selected = true; '태그가 있는지 다시 확인할 수 있습니까? 나는 ViewBag이 당신의 목록을 망치고 있다고 생각하지 않습니다. – StuartLC

+0

예. 나는 그것을했고 그것은 올바른 선택을 표시합니다. – gdubs

답변

21

시도 :

ViewBag.ListOfCodes = new SelectList(mymodelinstance.Codes, "Id", "Name"); 
ViewBag.Codes = "C"; 

하고보기 :이를 위해

<%= Html.DropDownList(
    "Codes", 
    (IEnumerable<SelectListItem>)ViewBag.ListOfCodes, 
    new { style = "max-width: 600px;" } 
) %> 

이 같은 컬렉션 내부 아이디 = "C"와 항목이 있어야합니다 분명히 작동합니다 :

ViewBag.ListOfCodes = new SelectList(new[] 
    { 
     new { Id = "A", Name = "Code A" }, 
     new { Id = "B", Name = "Code B" }, 
     new { Id = "C", Name = "Code C" }, 
    }, "Id", "Name"); 
+0

이 중 어느 부분이 "코드 C"를 선택합니까? – gdubs

+1

이 하나 :'ViewBag.Codes = "C";'. 뷰에서'DropDownList' 도우미에 대한 첫 번째 인수로 코드를 사용 했으므로 ViewBag에서 값을 가져옵니다. 뷰 모델과 강력한 타입의 DropDownListFor 도우미를 사용하고 항상 사람들에게 권장하는 ViewBag에 대해서는 잊어 버렸을 지 모르겠습니다. –

+0

나는 그것에 동의한다. 이 시나리오에서는이 목록의 값이 다른 드롭 다운 목록의 다른 값에 추가되어 인스턴스에 쓰여 집니 다. 다르게 모델링했으면 좋겠어. – gdubs

관련 문제