我知道已经有很多类似的问题,但我花了好几个小时试图解决这个问题,其他答案似乎都没有帮助!
我想使用MVC在下拉列表中显示字符串列表。这真的很难吗?我没有“文本”和“值”分离(尽管MVC似乎需要一个) - 显示给用户的字符串是我的值。
到目前为止我有以下内容:
控制器:
public ActionResult Index()
{
return View(new HomeViewModel());
}
视图模型:
public class HomeViewModel
{
public HomeViewModel()
{
Items = new SelectList(new[]
{
new SelectListItem { Text = "One", Value = "One" },
new SelectListItem { Text = "Two", Value = "Two" },
});
}
public SelectList Items { get; set; }
}
查看:
<% using (Html.BeginForm()) { %>
<% Html.DropDownListFor(x => x.Items, Model.Items); %>
<input type="submit" value="Go!" />
<% } %>
但没有我似乎会导致显示下拉列表。我做错了什么?
答案 0 :(得分:10)
<%= Html.DropDownListFor(x => x.Items, Model.Items) %>
你是令人困惑的表达和陈述。 Html帮助器返回一个字符串,因此您需要使用=
输出'html-value'(之后没有;
)。
<强>更新强>
Items = new SelectList(new[]
{
new SelectListItem {Text = "One", Value = "One"},
new SelectListItem {Text = "Two", Value = "Two"},
}, "Text", "Value");
更新2:
实际上,对于您的情况,您可以以更简单的方式进行:
public class HomeViewModel
{
public HomeViewModel()
{
Items = new SelectList(new[] { "One", "Two" });
CurrentItem = "Two";
}
public SelectList Items { get; set; }
public string CurrentItem { get; set; }
}
在视图中:
<%= Html.DropDownListFor(x => x.CurrentItem, Model.Items) %>