ASP.Net Select 基于 EF 模型返回值的下拉选项(在视图中)

ASP.Net Select a Dropdown option (in View) based on a value returned by EF model

对于我的视图中的下拉列表(作为 SelectList),我可以成功地将值设置为我的模型返回的 ID,但列表不会更新以将所选 ID 反映为所选项目。

<%var type = Model.CompanyTypeId; %>
<%= Html.DropDownList("Type", (ViewData["Types"] as SelectList),
        new Dictionary<string, object>()
            {
                { "class", "form-control form-input"},
                { "Id", "CoType"},
                { "Name", "CoType"},
                { "value", type },
                { "option", "selected" }
             })%>

我希望下拉列表将所选项目更新为相应的 Id

(在 ChromeDev 工具中我可以验证 Id=Model.CompanyTypeId 和 option="selected",但下拉列表仍然显示默认选择的项目。

我希望下拉列表将所选项目更新为相应的 Id

(在 ChromeDev 工具中我可以验证 Id=Model.CompanyTypeId 和 option="selected",但下拉列表仍然显示默认选择的项目。

    <select id="CoType" name="CoType" class="form-control form-input" 
     option="selected" value="1">
        <option value="-1">- Assign Type - </option>
        <option value="1">Dummy</option>
        <option value="2">Test CompanyType</option>
    </select>

因为您已经有了 Model.CompanyTypeId,您可以轻松使用 Html.DropDownListFor。您没有为 HTML 属性设置值。

控制器

public ActionResult Index()
{
    var model = new TestModel
    {
        CompanyTypeId = 1
    };

    ViewBag.Types = new List<SelectListItem>
    {
        new SelectListItem { Value = "-1", Text = "-- Assign Type --" },
        new SelectListItem { Value = "1", Text = "Dummy" },
        new SelectListItem { Value = "2", Text = "Test" },
    };

    return View(model);
}

查看

@Html.DropDownListFor(m => m.CompanyTypeId, 
    (ViewBag.Types as List<SelectListItem>),
    new Dictionary<string, object>()
    {
        { "class", "form-control form-input"},
        { "Id", "CoType"},
        { "Name", "CoType"}
     })