使用强类型助手的整个目的是 的 捆绑 强> 你的模型属性所以在这种情况下
@Html.DropDownListFor(m => m.secteur, selectList)
如果是的价值 secteur 与您的某个选项的值不匹配,则不会被选中(实际上因为它找不到匹配项,所以将选择第一个选项,因为需要选择某些选项)。
secteur
但是您的代码还存在许多其他问题。首先你要创造 IEnumerable<SelectListItem> (设置 Selected 属性是无意义的,因为它被助手忽略了),然后你创建另一个 IEnumerable<SelectListItem> (该 SelectList )基于下一行中的第一个(最重要的是什么?)。生成的选项的值基于 ID 的财产 AuditSecteur 但是你绑定到了 Secteur 财产,所以它永远不会发回正确的价值。它不是很清楚你如何使用它(你没有包括你的模型,控制器或视图),但正确的方法将是这样的
IEnumerable<SelectListItem>
Selected
SelectList
ID
AuditSecteur
Secteur
查看模型
public class SecteurVM { [Display(Name = "Secteur")] [Required] public int? SelectedSecteur { get; set; } public SelectList SecteurList { get; set; } }
调节器
public ActionResult Create() { List<AuditSecteur> secteurList = // get AuditSecteur items from the database SecteurVM model = new SecteurVM(); model.SecteurList = new SelectList(secteurList, "ID", "Secteur"); model.SelectedSecteur = // set the default value you want selected here return View(model) } [HttpPost] public ActionResult Create(SecteurVM model) { // model.SelectedSecteur contains the ID of the selected item }
视图
@model SecteurVM .... @Html.LabelFor(m => m.SelectedSecteur) @Html.DropDownListFor(m => m.SelectedSecteur, Model.SecteurList, "--Please select--") @Html.ValidationMessageFor(m => m.SelectedSecteur)
如果值 SelectedSecteur 匹配其中一个 ID 列表中项目的属性,然后是显示视图时将选择的选项。
SelectedSecteur
你将DropDown绑定到 secteur 模型的属性,而下拉的价值因素是 Id 因此下拉列表在进行预选时不会找到相应的值。
Id
即使你已经定义了 pre-selected 项目它会 reset 虽然渲染,所以我建议绑定你下拉列表 Id 代替 secteur 。
pre-selected
reset
@Html.DropDownListFor(m => m.Id, selectList)