我有一个带有类型模型的视图,List<string>我想在页面上放置一个下拉列表,该列表包含列表中所有字符串作为下拉列表中的项。我是MVC的新手,我将如何实现呢?
List<string>
我尝试了这个:
@model List<string> @Html.DropDownListFor(x => x)
但这引发了错误。
要创建下拉列表,您需要两个属性:
在您的情况下,您只有一个字符串列表,无法利用该列表来创建可用的下拉列表。
而对于数字2,您可以使值和文本相同,并且需要绑定属性。您可以使用辅助程序的弱类型版本:
@model List<string> @Html.DropDownList( "Foo", new SelectList( Model.Select(x => new { Value = x, Text = x }), "Value", "Text" ) )
其中Foo将是ddl的名称,并由默认模型绑定程序使用。因此,生成的标记可能如下所示:
Foo
<select name="Foo" id="Foo"> <option value="item 1">item 1</option> <option value="item 2">item 2</option> <option value="item 3">item 3</option> ... </select>
据说,下拉列表的更好的视图模型如下:
public class MyListModel { public string SelectedItemId { get; set; } public IEnumerable<SelectListItem> Items { get; set; } }
然后:
@model MyListModel @Html.DropDownListFor( x => x.SelectedItemId, new SelectList(Model.Items, "Value", "Text") )
如果要在此列表中预先选择某个选项,则只需SelectedItemId将该视图模型的属性设置为集合Value中某个元素的对应属性即可Items。
SelectedItemId
Value
Items