在我的编辑页面中,使用EditorFor编辑位置值。
@Html.EditorFor(model => model.location, new { htmlAttributes = new { @class = "form-control" , id = "testing" } })
但是我想对值进行编辑,如下所示。
如何使它默认为正确的值并能够选择其他选项。
var selectLocation = new SelectList(
new List<SelectListItem>
{
new SelectListItem {Text = "State", Value = "State"},
new SelectListItem {Text = "International", Value = "International"},
new SelectListItem {Text = "test2", Value = "test2"},
}, "Value", "Text");
答案 0 :(得分:2)
用于生成@Html.EditorFor()
元素而不是<input>
元素的<select>
助手。您应该在视图模型上使用类型为IEnumerable<SelectListItem>
的属性:
public class ViewModel
{
public string location { get; set; }
public List<SelectListItem> Locations { get; set; }
}
并在这样的控制器操作方法中分配它:
var model = new ViewModel();
var selectLocation = new List<SelectListItem>()
{
new SelectListItem {Text = "State", Value = "State"},
new SelectListItem {Text = "International", Value = "International"},
new SelectListItem {Text = "test2", Value = "test2"},
};
model.Locations = selectLocation;
// return the view with existing viewmodel
return View(model);
然后,使用@Html.DropDownListFor()
帮助程序生成带有选项列表的<select>
元素:
@Html.DropDownListFor(model => model.location, Model.Locations, ...)
注意:
1)如果已经创建了List<SelectListItem>
对象,则无需将其转换为SelectList
对象,因为SelectList
的选项列表也具有IEnumerable<SelectListItem>
类型。
2)另外,您也可以使用ViewBag
传递List<SelectListItem>
对象,但是上述方法通常用于强类型选项列表。