【问题标题】:Set selected item in selectlist在选择列表中设置所选项目
【发布时间】:2015-11-28 17:03:22
【问题描述】:
IEnumerable<Product> Get();

我获取项目并创建这些对象的集合

 public class Product
    {
        public int? ProductId { get; set; }
        public string ProductName { get; set; }
    }    

Name = new SelectList(Get(), "ProductId", "ProductName", model.Id)

 @Html.DropDownListFor(m => m.Id, Model.Name)

在模型中

public int Id { get; set; }

public SelectList Name { get; set; }

始终在页面上选择的项目是第一项

如何通过 model.Id 设置所选项目?

【问题讨论】:

  • 我不确定你的问题是什么?有什么问题?
  • 您是否在控制器上设置了断点以查看模型的值?

标签: c# asp.net asp.net-mvc asp.net-mvc-3 asp.net-mvc-4


【解决方案1】:

正确的做法是:

@Model.Name = new SelectList(Get(), "ProductId", "ProductName", model.Id)
@Html.DropDownListFor(m => m.Id, Model.Name)

【讨论】:

    【解决方案2】:
    Id = smth logic,
    Name = new SelectList(Get(), "ProductId", "ProductName")
    

    需要初始化Id。我没有这样做

    【讨论】:

      【解决方案3】:

      要在下拉列表中预选一个项目,您可以将值设置为您传递给Html.DropdownListFor 辅助方法的第一个参数。

      public class CreateOrderVM
      {   
          public SelectList Products{ set; get; }
          public int? SelectedProduct { set; get; }
      }
      

      在您的 GET 操作方法中

      public ActionResult Order()
      {
         var vm = new CreateOrderVM();
         var productList= Get();
         vm.Products =new SelectList(productList,"ProductId","ProductName"); 
      
         vm.SelectedProduct = 2 ; // Replace 2 with the ProductId
                                  // of the Product record you want to be selected.
      
      }
      

      还有你的观点

      @model CreateOrderVM
      @Html.DropDownListFor(s => s.SelectedProduct , Model.Products, "Select")
      

      另外,作为旁注,我不确定您为什么将 ProductId 属性设置为可为空的 int。通常所有的实体记录都会有一个有效的 id。

      【讨论】:

        猜你喜欢
        • 2017-07-25
        • 2016-07-09
        • 1970-01-01
        • 2017-07-02
        • 2012-08-20
        • 2019-04-18
        • 1970-01-01
        • 1970-01-01
        • 2019-08-21
        相关资源
        最近更新 更多