2009-12-20 5 views
3

미리 선택된 값으로 선택 목록을 렌더링하려면 Html.DropDownList (문자열 이름, IEnumerable SelectList, Object htmlAttributes)를 사용하고 싶습니다.HTML.DropDownList가 미리 선택된 값을 고려하지 않습니다.

내 선택 목록 내보기의 모델 객체에, 그래서 나는 다음과 같은 코드을 writting되었습니다

<%= Html.DropDownList("aName", mySelectList, new { }) %> 

미리 선택된 값없이 선택 목록을 렌더링합니다.

나는 다음을 ViewData로 selectList의를 통과하고하고있다 찾은 해결 방법 : 뷰에서

ViewData["TimeZones"] = mySelectList; 

:

<%= Html.DropDownList("TimeZones", null, new { }) %> 

이 방법 선택을 컨트롤러에서

목록은 미리 선택된 값으로 렌더링되지만, 선택 목록을 뷰 데이터로 전달하지 않아도됩니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? 당신의 도움에 미리 감사드립니다.

+0

mySelectList는 어떻게 만듭니 까? 'new {} '는 필요 없습니다. – LukLed

답변

1

선택된 항목

다른 접근법이 자동으로 선택 항목을 결합하는 것이다 바인드 및 드롭 다운리스트 헬퍼 메소드의 파라미터로서 항목들의리스트를 전달.

컨트롤러에서 이전과 완전히 똑같이 수행하고 모든 항목의 Selected 속성을 true로 설정하지 마십시오. 그런 다음 선택하려는 항목의 값을보기 모델에 입력해야합니다.

var model = new IndexViewModel() 
      { 
       ListItems = items, 
       SelectedItem = 2 
      }; 

은 마지막으로보기에, 당신은 또한 selectList의 매개 변수를 허용하는 오버로드를 사용 렌더링 된 HTML의 유일한 차이는

<%= Html.DropDownList("SelectedItem", Model.ListItems) %> 

, 그 첫 번째 방법으로는 HTML의 이름 선택 요소는 ListItems이고, 두 번째 요소는 SelectedItem입니다.

이러한 방법은 고유 한 목록을 만드는 경우에는 문제가 없지만 외부 저장소에 대한 옵션 목록 (예 : DB 리포지토리)을받는 경우 최적의 솔루션이 아닙니다. 당신은 단순히 (그것은 작동)이 작업을 수행 할 수 있습니다

link

3

에서보세요 :

<%: Html.DropDownList("DropdownName", new SelectList(ListItems, "Value", "Text", selectedItem), htmlAttributes)%> 

날 경우이 당신을 위해 작동하지 않습니다 알려주십시오.

+0

고맙게도, 이것은 Razor VE에서도 잘 작동합니다. ListItems 컬렉션에 List <>를 전달할 수있었습니다. 완벽하게 작동했습니다. – hanzolo

0

나는 이것이 오래된 게시물 인 것을 알고 있지만 MVC5에서 유사한 문제가 발생했습니다. 해결책은 간단하지만 잠시 그걸로 어려움을 겪었으므로 나도 나눌 것이라고 생각했습니다.

VS 뷰에두고 DropDownLists를 자동으로 생성 컨트롤러에서

@Html.DropDownList("EpisodeTypeId", null, htmlAttributes: new { @class = "form-control" }) 

은 VS의 다르게 대하고 편집을 만들기위한 ViewBag 코드를 자동 - 생성합니다.

ViewBag.EpisodeTypeId = new SelectList(db.EpisodeTypes, "Id", "Name"); 

그리고 편집에서 :

은 여기에 작성에서 코드의 예상대로 네 번째 인수는, 편집 중요하다

ViewBag.EpisodeTypeId = new SelectList(db.EpisodeTypes, "Id", "Name", episode.EpisodeTypeId); 

있다. 제외 시키면 해당 레코드의 데이터베이스 값이 DropDown에서 미리 선택되지 않습니다.

VS 자동 생성 코드는 정확할 수 있지만 나중에 수동으로 필드에 추가하는 경우에는 놓치기 쉽습니다.

관련 문제