2016-09-27 5 views
0

나는이 같은 방법이있는 경우 : 내 편집 작업에서 다음가져 오기 SelectedValue 목록에서 <SelectListItem> DDL

public static List<SelectListItem> lstPassFail() 
{ 
    List<SelectListItem> lstPossiblePassFail = new List<SelectListItem>() 
    { 
     new SelectListItem() { Text = "Pass", Value = "Pass" }, 
     new SelectListItem() { Text = "Fail", Value = "Fail" }, 
    }; 

    return lstPossiblePassFail; 
} 

을 나는이 작업을 수행 :

편집보기에서 다음
ViewBag.PassFail = ClassName.lstPassFail(); 

이 작업을 수행합니다.

@Html.DropDownList("PassFail", (List<SelectListItem>)ViewBag.PassFail, "-- Please Select a Result --", htmlAttributes: new { @class = "form-control" }) 

이 레코드는 이미 데이터베이스에 있으며이 필드에는 이미 값이 있습니다. DDL 대신 기본적으로 첫 번째 옵션을 선택하는 대신 해당 값을 어떻게 표시합니까?

SelectList에 대한 오버로드 된 메서드를 사용하여이 작업을 수행 할 수 있다는 것을 알고 있지만 위의 그림과 같이이 작업을 수행 할 수 있습니까?

도움을 주시면 감사하겠습니다.

+0

'ViewBag'대신 'PassFail' 속성이있는 모델을 사용합니까? – GSerg

+1

'@ Html.DropDownListFor'를 사용하지 않는 이유는 무엇입니까? – JamieD77

+0

@ JamieD77 나는 이것을 알아 냈다. 나는 내 대답을 게시했다 –

답변

1

나는 이것을 알아 냈습니다.

나는 변경 :

ViewBag.PassFail = ClassName.lstPassFail(); 

ViewBag.PassFail = new SelectList(ClassName.lstPassFail(), "Value", "Text", chosenWTest.PassFail); 

에 그리고 내보기에 내가이 그 레코드에 해당 필드의 값을 저장이

@Html.DropDownList("PassFail", null, "-- Please Select a Result --", htmlAttributes: new { @class = "form-control" }) 

에 DropDownList로 변경.

+0

끔찍한 해결책 (강한 바인딩, 유효성 확인 등 없음). 모델에 바인딩하십시오. 또한 [viewBag 이름을 모델 속성 이름과 동일하게 지정하면 충돌이 발생합니까?] (http://stackoverflow.com/questions/37161202/will-there-be-any-conflict-if-i- 모드와 동일하게 뷰 백 이름 지정/37162557 # 37162557) –