2015-11-28 134 views
1
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; } 

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

如何我可以按照型号设置选定的项目。

+0

我不确定你的问题是什么?问题是什么? –

+0

@KarlGjertsen编辑 – i545219

+0

您是否在控制器上放置了断点以查看模型的值? –

回答

2

正确的方法是:

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

我编辑问题。 我通过模型调用Name – i545219

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

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

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. 

} 

而且你的Razor视图

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

此外,作为一个侧面说明,我不知道为什么你ProductId财产可空INT。通常所有的实体记录都会有一个有效的ID。