asp.net-mvc如何在 asp.net mvc 中显示所选的值的下拉列表?

标签: Asp.net-MVC
发布时间: 2016/9/30 3:26:00
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我有 Html.DropDownList 编辑页面里面的......我不能显示的下拉列表值,它总是显示与 Select 相反我想要下拉列表中的项目显示为选定基于模型的值说 Model.Mes_Id ...如何做任何建议......

       <p>
            <label for="MeasurementTypeId">MeasurementType:</label>
         <%= Html.DropDownList("MeasurementType", // what should i give here?)%>
            <%= Html.ValidationMessage("MeasurementTypeId", "*") %>
        </p>

编辑︰我想要显示在编辑视图中选择一个值,它却列表项...

   public ActionResult Edit(int id)
    {
        var mesurementTypes = consRepository.FindAllMeasurements();
        ViewData["MeasurementType"] = mesurementTypes;
        var material = consRepository.GetMaterial(id);
        return View("Edit", material);
    }

我存储库的方法,

public IEnumerable<SelectListItem> FindAllMeasurements()
        {
            var mesurements = from mt in db.MeasurementTypes
                              select new SelectListItem
                              {
                                 Value = mt.Id.ToString(),
                                 Text= mt.Name
                              };
            return mesurements;
        }

解决方法 1:

设置所选的项目,当您创建 IEnumerable<SelectListItem>

亲自将创建该窗体的专门的 viewmodel 但会由您的代码,做类似︰

public ActionResult Edit(int id)
{
    //Put this first
    var material = consRepository.GetMaterial(id);
    //pass in your selected item
    var mesurementTypes = consRepository.FindAllMeasurements(material.MeasurementTypeId);
    ViewData["MeasurementType"] = mesurementTypes;

    return View("Edit", material);
}

然后将您的存储库方法更改为类似︰

public IEnumerable<SelectListItem> FindAllMeasurements(int selectedId)
{
     var mesurements = from mt in db.MeasurementTypes
                      select new SelectListItem
                      {
                         Value = mt.Id.ToString(),
                         Text= mt.Name,
                         Selected = mt.Id == selectedId
                      };

    return mesurements;
}

HTHs,
查尔斯 ·

官方微信
官方QQ群
31647020