模型
public class Customer
{
public string Name {get;set;}
public List<Product> Products {get;set;}
}
public class Product
{
public string Name {get;set;}
public ProductType {get;set;}
public IEnumerable<ProductType> ProductTypeList { get; set; }
}
控制器
[HttpGet]
public ActionResult Index(int id)
{
var customer = GetCustomer(id);
return View(customer);
}
查看
@model Customer
@Html.TextBoxFor(x=>x.Name);
@for (int i = 0; i < Model.Products.Count; i++)
{
@Html.TextBoxFor(x => x.Products[i].Name)
@Html.TextBoxFor(x => x.Products[i].Price)
@Html.DropDownListFor(x => x.Products[i].ProductType, Model.ProductTypeList)
}
结果:
HTML中的产品名称和价格正确显示,但<select>
未选择正确的ProductType(即使模型具有其他值,也会选择第一项)。
当我提交表单时,值被绑定,当验证返回时,表单也绑定到选定的值。
唯一的问题是第一次加载页面时未绑定DropDownList选定值。
答案 0 :(得分:1)
我认为问题在于ProductType
:
@Html.DropDownListFor(x => x.Products[i].ProductType, Model.ProductTypeList)
它似乎是一种复杂的类型。
请尝试将其更改为:
public class Product
{
public string Name {get;set;}
public string SelectedProductType {get;set;}
public IEnumerable<ProductType> ProductTypeList { get; set; }
}
在上文中,SelectedProductType
将是您ProductType
的ID。
然后设置如下:
@Html.DropDownListFor(x => x.Products[i].SelectedProductType, Model.ProductTypeList)