使用Razor视图在asp.net mvc 3中创建带有预定义值的下拉菜单

本文关键字:创建 预定义 下拉菜单 视图 Razor asp mvc net 使用 | 更新日期: 2023-09-27 18:12:18

我正在制作一个窗体的部分视图。在其中,我想使用3个值显示一个下拉菜单,例如:

<td>
    @Html.DropDownList("Yes", "No", "Not Applicable")
</td>

显然我不能硬编码这样的值,但这就是想法。我将只在这个视图中使用这个下拉,所以如果可能的话,我想保持这里的逻辑,唯一的事情是我想跟踪选定的值,所以我想添加一些隐藏的值,比如Id。在我看来,有办法做到这一点吗?我想过传递一个ViewBag参数或类似的东西,但我真的认为必须有一个更优雅的解决方案。

使用Razor视图在asp.net mvc 3中创建带有预定义值的下拉菜单

ViewData["myList"] = 
                new SelectList(new[] { "10", "15", "25", "50", "100", "1000" }
                .Select(x => new {value = x, text = x}), 
                "value", "text", "15");

那么在你看来:

@Html.DropDownList("myList")

或者你可以使用linq来生成选择列表

IList<Customer> customers = repository.GetAll<Customer>();
IEnumerable<SelectListItem> selectList = 
    from c in customers
    select new SelectListItem
    {
        Selected = (c.CustomerID == invoice.CustomerID),
        Text = c.Name,
        Value = c.CustomerID.ToString()
    };

在你的例子中:

    List<SelectListItem> ls = new List<SelectListItem>();
    ls.Add(new SelectListItem() { Text = "Yes", Value = "true", Selected = true });
    ls.Add(new SelectListItem() { Text = "No", Value = "false", Selected = false });
    ls.Add(new SelectListItem() { Text = "Not Applicable", Value = "NULL", Selected = false });
    ViewData["myList"] = ls;

如果您只在View中需要这些数据,则可以不使用帮助程序编写:

<select name="PropertyName" id="PropertyName">
    <option value="Yes">Yes</option>
    <option value="No">No</option>
    <option value="Not Applicable">Not Applicable</option>
</select>

和选择项目jquery

@Html.DropDownList(
    "PropertyName", 
    new SelectList(
        (new List {"Yes", "No", "Not Applicable"}).Select(x => new { Value = x, Text = x }),
        "Value",
        "Text",
        "SelectedValue"
    )
)

<select name="PropertyName" id="PropertyName">
    @{string[] list = new string[] { "Yes", "No", "Not Applicable" };}
    @foreach (var item in list)
    {
        <option @if(item == "SelectedValue") { <text>selected="selected"</text> } value="@item">@item</option>
    }
</select>