【问题标题】:Creating a Drop Down List in ASP.NET MVC在 ASP.NET MVC 中创建下拉列表
【发布时间】:2015-02-11 14:00:59
【问题描述】:

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

谢谢!

【问题讨论】:

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


    【解决方案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>
    

    【讨论】:

      【解决方案2】:

      小型工作 sn-p:

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

      【讨论】:

      • DropDownListFor 方法的第一个参数是一个属性选择器 lambda 表达式 - 您在此处选择的属性将显示在选择选项中(很像在非mvc(网络表单)ASP.NET DropDownList.
      【解决方案3】:

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

      在你的控制器中

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-03-22
        • 1970-01-01
        • 2021-12-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多