为什么我的Html.DropDownListFor没有正确显示模型的值?

时间:2015-09-23 09:56:55

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

我尝试创建下拉列表来设置数组中元素的值。我有这个简单的对象来保存单个房间的细节

public class RoomOccupants
{
    public int adults { get; set; }
    public int children { get; set; }
    public int infants { get; set; }
}

我的模型上有一些这些对象来保存所有房间的信息

public RoomOccupants[] rooms { get; set; }

在我的剃刀模板中,我创建了像这样的下拉列表

<label>Guests in Room 1</label><br />
<label>Adults</label>
@Html.DropDownListFor(model => model.rooms[0].adults, Model.passengerOptions, new { autocomplete = "off" })

<label>Children</label>
@Html.DropDownListFor(model => model.rooms[0].children, Model.passengerOptions, new { autocomplete = "off" })

<label>Infants</label>
@Html.DropDownListFor(model => model.rooms[0].infants, Model.passengerOptions, new { autocomplete = "off" })

Model.passengerOptions是整数0 - 9的SelectListItem列表,我在几个不同的下拉列表中使用它。它是在模型的构造函数中创建的。

passengerOptions = new List<SelectListItem>();
passengerOptions.Add(new SelectListItem() { Value = "0", Text = "0"});
passengerOptions.Add(new SelectListItem() { Value = "1", Text = "1" });
passengerOptions.Add(new SelectListItem() { Value = "2", Text = "2" });
passengerOptions.Add(new SelectListItem() { Value = "3", Text = "3" });
passengerOptions.Add(new SelectListItem() { Value = "4", Text = "4" });
passengerOptions.Add(new SelectListItem() { Value = "5", Text = "5" });
passengerOptions.Add(new SelectListItem() { Value = "6", Text = "6" });
passengerOptions.Add(new SelectListItem() { Value = "7", Text = "7" });
passengerOptions.Add(new SelectListItem() { Value = "8", Text = "8" });
passengerOptions.Add(new SelectListItem() { Value = "9", Text = "9" });

当我调试代码时,我可以看到我的模型包含正确的值,但所有下拉列表始终显示为0.

我创建了一些使用相同的选项列表在同一页面上正常工作的下拉菜单,但它们不在数组中,所以可能就是这样吗?

1 个答案:

答案 0 :(得分:0)

不知道这是否是因为数组,它可能有。 而不是那个尝试,List ..这将正常工作。

公开名单&lt; SelectedListItem&gt;在模型中的房间{get; set;}。

您可以直接使用模型的属性。

@ Html.DropDownListFor(model =&gt; model.infants,Model.passengerOptions,new {autocomplete =“off”})

感谢。

@ Html.DropDownListFor(model =&gt; model.children,Model.passengerOptions,new {autocomplete =“off”})

@ Html.DropDownListFor(model =&gt; model.adults,Model.passengerOptions,new {autocomplete =“off”})

谢谢。 :)