2016-12-02 39 views
-1

我有一个状态下拉在我的MVC应用程序,并调用帮助器方法来填充下拉列表。在多次选择相同的值时,下拉将重置为默认值“选择状态”,而不是正确的状态。MVC Html.DropDownListFor不绑定在选择相同的值

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

您可以从下拉列表中选择它的工作原理,再向下打开下拉列表,选择相同的项目,并将其重置为空?你能解释更多... – Emad

+0

**多于一次的相同值,下拉正在重置**请问您能详细说明一下吗? – Shyju

+0

如果你把'@(Model.Pat.StateId)'放在某处,它是否显示你期望的值? –

回答

1

我认为这个问题是在你的.Any条件,因为会在你的列表中选择非选择,所以它会返回true。

尝试将其更改为:

result.Insert(0, new SelectListItem { Value = "", Text = "Select state...", Disabled = true, Selected = !result.Any(x => x.Selected)}); 
相关问题