使用动态列表</select>填充<select>

时间:2013-08-01 12:44:53

标签: c# html css asp.net-mvc asp.net-mvc-4

我正在创建一个显示动态数据的MVC 4网站。我有一个搜索功能,他们可以在输入框中输入ID,只查看与该ID相关的信息。我想通过使用<select>列表来限制搜索功能,因此只能选择有效的选项。

这是我写的代码:

<select>
    @foreach (var item in Model)
    {
        <option value='@Html.ValueFor(modelItem => item.ResponseIdentifier)'></option>
    }
</select>

我只是想抓住Id并将其用作我的选择列表中的下拉值。但是,我得到的只是下拉列表中的空白区域。

我是网络编程的新手,对MVC不是很熟悉。我尝试了几个其他方法来获取值,但没有一个工作。如果有人有任何提示,那将是伟大的。谢谢Stack Overflowers! :)

2 个答案:

答案 0 :(得分:2)

您必须设置value html控件的textselect。 sintaxe是:

<option value='your value'>text</option>

尝试这样的事情:

<select>
    @foreach (var item in Model)
    {
        <option value='@item.ResponseIdentifier'>@item.ResponseIdentifier</option>
    }
</select>

或者,在我看来它更好。您在控制器上的操作,您可以在ViewBag到fil lthe dropdownList上定义一个键,用于示例:

ViewBag.Cities = new SelectList(new[]
{
    new { Id = "1", Name = "New York" },
    new { Id = "2", Name = "São Paulo" },
    new { Id = "3", Name = "London" },
}, "Id", "Name");

要填充此ViewBag,它可能来自任何地方的数据库或xml文件。在您的视图中,您可以使用ViewBag上的此项来使用Html帮助程序填充DropDownList,以获取示例:

@Html.DropDownList("City", (IEnumerable<SelectListItem>)ViewBag.Cities, new { style = "max-width: 600px;" })

答案 1 :(得分:1)

我认为您正在寻找的内容已经在讨论过了 this thread

<select>
@foreach (var item in Model)
{
    <option value="@item.ResponseIdentifier"></option>
}
</select>

应该有效