我有我合併成一個ViewModel,所以我可以一次編輯所有數據的兩個自動生成的數據庫模型(產品和產品詳細)。迭代的ICollection從視圖模型中查看
讓我感到困惑的是我應該在視圖內通過ICollection Product_PetactCategoryAttributes(在ProductDetail模型中)迭代的部分,以允許.NET自動將屬性綁定到ViewModel。我試過爲以及foreach循環,但沒有任何成功,因爲正在使用錯誤的名稱(需要自動綁定)創建控件。
產品型號
public partial class Product
{
public Product()
{
this.ProductDetail = new HashSet<ProductDetail>();
}
public int idProduct { get; set; }
public int idProductCategory { get; set; }
public string EAN { get; set; }
public string UID { get; set; }
public bool Active { get; set; }
public virtual ProductCategory ProductCategory { get; set; }
public virtual ICollection<ProductDetail> ProductDetail { get; set; }
}
產品詳情模型
public partial class ProductDetail
{
public ProductDetail()
{
this.Product_ProductCategoryAttribute = new HashSet<Product_ProductCategoryAttribute>();
}
public int idProductDetail { get; set; }
public int idProductCategory { get; set; }
public int idMeta { get; set; }
public int idProduct { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public virtual Meta Meta { get; set; }
public virtual Product Product { get; set; }
public virtual ICollection<Product_ProductCategoryAttribute> Product_ProductCategoryAttribute { get; set; }
public virtual ProductCategory ProductCategory { get; set; }
}
ProductViewModel - 一個產品可以有很多產品詳細
public class ProductViewModel
{
public Product Product { get; set; }
public List<ProductDetail> ProductDetails { get; set; }
}
視圖(一些碼被有意地省略)
@for (int i = 0; i < Model.ProductDetails.Count(); i++)
{
@Html.TextAreaFor(model => model.ProductDetails[i].Description, new { @class = "form-control", @rows = "3" })
@for (int j = 0; j < Model.ProductDetails[i].Product_ProductCategoryAttribute.Count(); j++)
{
@Html.HiddenFor(model => model.ProductDetails[i].Product_ProductCategoryAttribute.ElementAt(j).idProductCategoryAttribute)
@Html.TextBoxFor(model => model.ProductDetails[i].Product_ProductCategoryAttribute.ElementAt(j).Value, new { @class = "form-control" })
}
}
for循環所有第二外部控制被正確命名例如。 產品詳細[0]。說明,然而for循環第二內產生控制由屬性值,其在這種情況下是價值和idProductCategoryAttribute得到他們的名字。如果我沒有錯,一個解決方案會將ICollection轉換爲IList,但是自動生成模型我不認爲這是最好的選擇。
索引不能與ICollections一起使用,所以不幸的是這不是答案。 –
然後這是不可能的。 ICollection沒有索引器,它需要一個索引來匹配它們。如果沒有訂單到列表,它就無法匹配特定字段.... – Luke
IList繼承ICollection,因此更改模型可能會很好 – Luke