2013-12-10 4 views
0

DropDownListFor 구문을 배우려고합니다.Html.DropdownList 문제 해결

for 루프에서 다음을 감안할 때 :

@Html.DropDownListFor( 
     model => model.SalutationID, Model.AvailableSalutations.Select(option => new SelectListItem 
     { 
      Selected = (option.ID == staff.SalutationID), 
      Text = option.Desc.ToString(), 
      Value = option.ID.ToString() 
     } 
    ), 
    "Choose...") 

을 ... 그리고 staff.SalutationID가 올바른 값을 (때, 예를 들어, 난 그냥 @Html.ValueFor(model => staff.SalutationID) 사용) 에코 않습니다 주어진 이유에 반향 모든 드롭을한다 내 루프 기본값은 "선택 ..."이 아니고 Selected 옵션은 무엇입니까?

+0

모든 것이 나에게 잘 보인다. Model.SalutationID = staff.SalutationID for 도우미가 선택한 항목을 자동으로 설정해야하므로 select 목록 항목에 설정할 필요가 없습니다. 당신은 그것을 제거하고 어떤 차이가 있는지 확인해보십시오. –

+0

@MattBodily No Matt, 아무런 차이가 없습니다 ... – Eamonn

답변

0

드롭 다운 목록에서 선택된 옵션의 정의는 Html.DropDownListFor의 첫 번째 매개 변수에 람다가 지정한 모델 속성의 값입니다. 귀하의 경우 model => model.SalutationID.

model.SalutationID이 모델에 예상 값을 가지고 있는지 확인하십시오. 그렇지 않은 경우,보기를 렌더링하기 전에 제어기의 조치에서 지정하십시오.

+0

그 람다가 가지고있는 가치를 에코하여 그것이 a)와 b)가 맞는지 확인하고 싶습니까? 그렇다면, 나는 이미'Html.ValueFor (model => staff.SalutationID)'를 루프 내에서 시도해 보았고 값은 각 레코드에 대해 올바르게 보여줍니다 ... 어떻게 검증해야하는지 모르겠습니다. – Eamonn

+0

당신은 저에게 제대로 작업하고 있어요 - 람다 표현식을'model => staff.SalutationID'로 바꿨습니다, 여기서'var staff = Model.AvailableStaffMembers [i];'는 루프 안에 있습니다. 이것은 그것을 작동하게합니다. 감사! – Eamonn

+0

SelectLists를 뷰 모델 속성으로 직접 정의하고 액션 (컨트롤러의 메서드)에 채우는 것이 좋습니다. 이 방법으로 디버그, 유닛 테스트 및 문제없이 뷰를 수정하는 것이 더 쉽습니다. – JotaBe