在 ASP.NET MVC 中创建下拉列表

Creating a Drop Down List in ASP.NET MVC

我有一个 ASP.NET MVC 4 应用程序。我不是 MVC 专家。在我看来(.cshtml 文件),我有一个绑定到的模型。在我的模型中,我有一个 short 值列表设置如下:

public void Load() {
  List<short> options = new List<short>();
  options.Add(1);
  options.Add(3);
  options.Add(7);
  this.Options = options;
}

public List<short> Options = new List<short>() { get; set; }
public short? SelectedOption = null;

在我的 .cshtml 文件中,我需要让用户从下拉列表中选择一个选项。我看到一堆 HTML 帮手,但我完全不知道该怎么做。我如何只显示下拉列表并将其绑定回我的模型?我已经成功绑定到文本框,所以我知道我的管道设置正确。只是这个下拉列表让我陷入了循环。

谢谢!

假设您传递给 .cshtml 视图的对象是您的列表,它可以通过 ViewBag 或作为 model 传递。

然后根据您的要求,您可以使用多种东西来制作一个下拉列表,其中最可取的是。 Html.DropDownList 扩展。 Link to MSDN
所以典型的代码是

var options = Model ; //OR Viewbag.Options;
@Html.DropDownList(options.Select(o=>
  new SelectListItem()
{
   Text = o.ToString(), 
   Value = o.ToString()}
))

此外,如果您想在没有此类专业助手的情况下进行操作,那么 您可以自己创建 HTML。

<select>
@foreach(var o in Options){
<option value="@o.ToString()">@o.ToString()</option>
}
</select>

小工作片段:

@model SelectListItem

@{
    ViewBag.Title = "Index";
    Layout = null;

    List<SelectListItem> x = new List<SelectListItem>() 
    { 
        new SelectListItem { Text = "1", Value = "100", Selected = false },
        new SelectListItem { Text = "2", Value = "200", Selected = true }
    };
}

<html>
<head>
    <title></title>
    <script src="~/Scripts/jquery-1.8.2.js"></script>
</head>
<body>

    @Html.DropDownListFor(model => model.Text, x)
</body>
</html>

<h2>Index</h2>

以上是一个视图的代码。您可以从控制器传递一个完整的模型,在调用 View 方法时,它将包含您要显示的元素列表。例如,我只是即时创建它 (x list)

您可以将这种方式用于下拉列表..

在你的控制器中

      var sample = new List<SelectListItem> { new SelectListItem { Text = "--Select--", Value = "0" }, new SelectListItem { Text = "A", Value = "1" }, new SelectListItem { Text = "B", Value = "2" } };
      ViewBag.something = sample;

在您看来,

      @Html.DropDownListFor(m => m.colname, (List<SelectListItem>)ViewBag.something , null, new { type = "text", Class = "", style = "" })