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

时间:2015-02-10 14:16:07

标签: asp.net-mvc asp.net-mvc-4

我有一个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助手,但我完全不知道如何做到这一点。如何只显示下拉列表并将其绑定回我的模型?我已成功绑定到文本框,所以我知道我的管道设置正确。它就是这个下拉列表,它让我失去了一个循环。

谢谢!

3 个答案:

答案 0 :(得分:1)

假设您传递给.cshtml视图的对象是您的列表,可以通过ViewBagmodel传递。

然后根据您的要求,您可以使用多个内容制作下拉列表,其中最优选的是。 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>

答案 1 :(得分:0)

小型工作片段:

@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列表)

答案 2 :(得分:0)

您可以使用这种方式进行下拉列表..

在您的控制器中

      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 = "" })