2016-12-02 1 views
-1

MVC 애플리케이션에서 상태 드롭 다운이 발생하여 드롭 다운을 채우는 도우미 메서드를 호출했습니다. 동일한 값을 두 번 이상 선택하면 드롭 다운이 올바른 상태가 아닌 기본값 인 "상태 선택"으로 재설정됩니다.MVC Html.DropDownList 같은 값을 선택할 때 바인딩이되지 않습니다.

HTML보기

<div> 
    @Html.LabelFor(m => m.Pat.StateId) 
    @Html.DropDownListFor(m => m.Pat.StateId, listHelper.GetState(Model.Pat.StateId)) 
    @Html.ValidationMessageFor(m => m.Pat.StateId) 
</div> 

도우미 코드

 public static IList<SelectListItem> GetStateOptions(int? selectedId = null) 
     { 
      var lookupService = DependencyResolver.Current.GetService<IConstantsHelper>(); 
      var result = lookupService.GetAll<State>().Select(x => new SelectListItem 
      { 
       Value = x.Id.ToString(), 
       Text = x.Text, 
       Selected = selectedId.HasValue && selectedId == x.Id 
      }).OrderBy(x => x.Text).ToList(); 
      result.Insert(0, new SelectListItem { Value = "", Text = "Select state...", Disabled = true, Selected = result.Any(x => !x.Selected)}); 
      return result; 
     } 
+0

가, 아래로 다시 드롭을 열고 같은 항목을 선택 작동하고 null로 재설정 아래 :

로 변경합니다? 더 자세히 설명해 주시겠습니까? – Emad

+0

** 같은 값이 한 번 이상, 드롭 다운이 재설정되고 있습니다 ** 정교하게 만드실 수 있습니까? – Shyju

+0

'@ (Model.Pat.StateId)'를 어딘가에 넣으면 기대했던 값을 보여줄 것입니까? –

답변

1

내가 아닌 목록에 옵션이 선택되어 있기 때문에 true를 돌려줍니다 때문에 문제가, 당신의 .Any 상태라고 생각합니다. 당신은 드롭 선택

result.Insert(0, new SelectListItem { Value = "", Text = "Select state...", Disabled = true, Selected = !result.Any(x => x.Selected)}); 
관련 문제