DropDownListFor - 显示一个简单的字符串列表

时间:2010-08-02 10:48:56

标签: c# asp.net-mvc drop-down-menu

我知道已经有很多类似的问题,但我花了好几个小时试图解决这个问题,其他答案似乎都没有帮助!

我想使用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!" />
<% } %>

没有我似乎会导致显示下拉列表。我做错了什么?

1 个答案:

答案 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) %>