dropdownlist为辅助值返回视图时不显示

时间:2015-11-02 14:43:51

标签: c# asp.net asp.net-mvc

我有一个成功渲染的视图,下拉列表已填充。

        List<SelectListItem> listBuildings = new List<SelectListItem>(context.Buildings.Select(b => new SelectListItem { Value = b.ID.ToString(), Text = b.BuildingName, }).ToList());
        SelectListItem buildingZeroItem = new SelectListItem() { Value = "0", Text = "Select Building" };
        listBuildings.Add(buildingZeroItem);
        model.Building = listBuildings;

它在浏览器中正确显示。然后我将表单提交到这样的帖子

        @using (Html.BeginForm("Booking", "Common", FormMethod.Post))
            {
               <div class="col-md-6">
                   @Html.LabelFor(m => m.Building)
                   @Html.DropDownListFor(m => m.Building, Model.Building, new { @class = "form-control", @style = "width:100%;" })
              </div>
            }

这是控制器中的帖子......

             [HttpPost]
             public ActionResult Booking( BookingViewModel model)
             {
               var myVals= model.Building
             }

模型中没有任何东西。建筑。我在这里错过了一些非常严肃的事情。我有附带的文本字段,它们的值被传递。它只是帮助器值的下拉列表,我找不到。这是为了验证。我想知道是否有人可以给我一些关于我哪里出错的解释。谢谢。

1 个答案:

答案 0 :(得分:2)

您需要在模型中声明一个属性,以指定DropDownList的selected元素的值,如下所示:

public IEnumerable<SelectListItem> Building { get; set; }
public int SelectedBuildingId { get; set; }

然后你需要在DropDownListFor声明中使用它:

@Html.DropDownListFor(m => m.SelectedBuildingId, Model.Building, new { @class = "form-control", @style = "width:100%;" })

您将获得该属性中所选元素的值