在选择列表中设置所选项目

时间:2015-11-28 17:03:22

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

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; }

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

如何按型号​​设置所选项目.Id?

3 个答案:

答案 0 :(得分:2)

正确的方法是:

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

答案 1 :(得分:0)

Id = smth logic,
Name = new SelectList(Get(), "ProductId", "ProductName")

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

答案 2 :(得分:0)

要预先选择下拉列表中的项目,可以将值设置为要传递给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属性作为nullable int。通常,所有实体记录都具有有效的ID。