如何在没有 viewbag、viewdata 或 JavaScript 的情况下动态确定下拉列表中的所选项目

How to dynamically determine the selected item in a dropdownlist without viewbag, viewdata, or JavaScript

保存我有一个对象 Mytype,它有一个对象 item 都有唯一的 ID,所以 ID1 和 ID2。

我有一个编辑表单,数据是根据Mytype的ID加载的,ID1。

public void Load(int id)
{

    var db = new dbEntities();
    Mytypes = db.MyTypes.ToList();
    MyTypeList = new SelectList(Mytypes, "ID", "Name");
    // etc ....

我有一个下拉列表,希望它落在与属于 Mytype 且 ID1 的项目具有相同 ID 的项目上。

 @Html.DropDownList("MyType_ID", Model.MyTypeList, 
         htmlAttributes: new { @class = "form-control",
         required = "required", autofocus = "autofocus" })

是否可以在不使用 ViewBagViewDataJS 的情况下执行此操作?

假设您的模型有一个名为 MyType_ID 的 属性,然后将其值设置为与选项值之一相匹配,在呈现视图时将选择该选项

public class MyModel
{
    public string MyType_ID { get; set; }
    public IEnumerable<SelectListItem> MyTypeList { get; set; }
    ....
}

并在控制器中

MyModel model = new MyModel()
{
    MyType_ID = "ID2",
    MyTypeList = new SelectList(Mytypes, "ID", "Name")
};
return View(model);

并在视图中

@Html.DropDownList("MyType_ID", Model.MyTypeList, new { @class = "form-control", autofocus = "autofocus" })

或者最好使用强类型 xxxFor() 方法

    @Html.DropDownListFor(m => m.MyType_ID, Model.MyTypeList, new { @class = "form-control", autofocus = "autofocus" })