Gro*_*kys 12 c# asp.net-mvc drop-down-menu
我知道已经有很多类似的问题,但我花了好几个小时试图解决这个问题,其他答案似乎都没有帮助!
我想使用MVC在下拉列表中显示字符串列表.这真的很难吗?我没有"文本"和"值"分离(尽管MVC似乎需要一个) - 显示给用户的字符串是我的值.
到目前为止我有以下内容:
控制器:
public ActionResult Index()
{
return View(new HomeViewModel());
}
Run Code Online (Sandbox Code Playgroud)
视图模型:
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; }
}
Run Code Online (Sandbox Code Playgroud)
视图:
<% using (Html.BeginForm()) { %>
<% Html.DropDownListFor(x => x.Items, Model.Items); %>
<input type="submit" value="Go!" />
<% } %>
Run Code Online (Sandbox Code Playgroud)
但没有我这样做似乎导致正在显示一个下拉列表.我究竟做错了什么?
Yak*_*ych 10
<%= Html.DropDownListFor(x => x.Items, Model.Items) %>
Run Code Online (Sandbox Code Playgroud)
你是令人困惑的表达和陈述.Html帮助器返回一个字符串,因此您需要使用=输出'html-value'(并且;后面没有).
更新:
Items = new SelectList(new[]
{
new SelectListItem {Text = "One", Value = "One"},
new SelectListItem {Text = "Two", Value = "Two"},
}, "Text", "Value");
Run Code Online (Sandbox Code Playgroud)
更新2:
实际上,对于您的情况,您可以以更简单的方式进行:
public class HomeViewModel
{
public HomeViewModel()
{
Items = new SelectList(new[] { "One", "Two" });
CurrentItem = "Two";
}
public SelectList Items { get; set; }
public string CurrentItem { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
并在视图中:
<%= Html.DropDownListFor(x => x.CurrentItem, Model.Items) %>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21518 次 |
| 最近记录: |