我有下面的下拉列表,但是所选的值似乎不起作用。默认为列表中的第一项。
private List<string> GetTransmissions()
{
List<string> Transmission = new List<string>();
Transmission.Add("Automatic");
Transmission.Add("Manual");
return Transmission;
}
Car car = _repository.GetCarDetails(id);
ViewBag.Transmission = new SelectList(GetTransmissions(), car.Transmission);在我看来,我有:
@Html.DropDownList("Transmission", (IEnumerable<SelectListItem>)ViewBag.Transmission, "Please Select", new { @class = "form-control" })发布于 2015-07-09 07:54:34
通过改变
ViewBag.Transmission = new SelectList(GetTransmissions(), car.Transmission);至
ViewBag.Transmissions = new SelectList(GetTransmissions(), car.Transmission);Car模型已经包含了一个名为传输的属性,因此需要另一个ViewBag来保存该属性。
在“我的剃须刀”代码中,请使用以下代码
@Html.DropDownList("Transmission", (IEnumerable<SelectListItem>)ViewBag.Transmissions, "Please Select", new { @class = "form-control" })发布于 2015-07-08 14:40:11
您需要区分保存列表的属性和保存所选值的属性。
我建议对视图使用一个视图模型,如下所示:
public class CarViewModel
{
public SelectList Transmissions
{
get
{
return new SelectList(new List<SelectListItem>{
new SelectListItem { Value = "Manual"},
new SelectListItem { Value = "Automatic"}
});
}
}
public string Transmission { get; set; }
}并使用这 DropDownListFor版本
@Html.DropDownListFor(model => model.Transmission,
@Model.Transmissions, "Please Select", new { @class = "form-control" })发布于 2015-07-08 14:34:49
如果您仅限于使用ViewBag而不是视图模型和@Html.DropDownList Helper,那么我将执行以下操作:
ViewBag.Transmissions = new SelectList(GetTransmissions()
.Select(t => new {value = t, text = t}),
"value", "text");
ViewBag.Transmission = car.Transmission;上面的内容创建了SelectList,然后进行项目,以便您的下拉列表呈现文本和值。这将保存在ViewBag.Transmissions中,这是可用的选项。
然后用ViewBag.Transmission设置您选定的传输。
您的剃须刀代码也需要更改以使用ViewBag.Transmissions:
@Html.DropDownList("Transmission",
(IEnumerable<SelectListItem>)ViewBag.Transmissions,
"Please Select", new { @class = "form-control" })https://stackoverflow.com/questions/31295193
复制相似问题