从一个视图更新包含多个子元素的文章

时间:2013-02-28 13:25:35

标签: asp.net-mvc-3 entity-framework

我几天来一直在寻找这个难题并且已经有很多可能的解决方案,但是这些例子与我正在尝试的内容相差甚远,而且由于这个原因,我还不足以接受数据。因此,我决定自己提出这个问题并展示我的具体情况。

我得到了这样的产品模型(简化)

public class Product
    {
        [Key]
        public int ProductId { get; set; }
        public string SKU { get; set; }
        public int ProductCategoriesId { get; set; }
        public bool Purchase { get; set; } 
        public bool ShowProduct { get; set; } 
        public virtual IList<ProductTranslations> ProductTranslations { get; set; }
    }

public class ProductTranslations 
    {
        [Key]
        public int ProductTranslationsId { get; set; }
        public int ProductId { get; set; }
        public string ProductLanguage { get; set; }
        public string Description { get; set; }
        public string ProductName { get; set; }
        public virtual Product Product { get; set; }
    }

所以我有一个产品具有语言中性数据,然后每个产品可以有几个子元素,每种语言一个。我有一个编辑表单,我想显示语言中性数据和语言特定数据(名称和描述)。

简化视图:

@model Artikelhantering.Models.Product

@using (Html.BeginForm())
{
@Html.LabelFor(model => model.SKU)

@foreach (var item in Model.ProductTranslations)
{
    @Html.EditorFor(TranslationItem => item.ProductName) 
    @Html.TextAreaFor(TranslationItem => item.Description)
}

<p>
<input type="submit" value="Save" />
</p>
}

这使得视图上的所有内容都看起来干净整洁,我认为,我认为我可以(应该?)为编辑器视图制作专用的视图模型。无论如何问题是我不知道如何更新提交数据。我可以使用普通的EF方法更新语言中性数据,但是对其他模型的字段的任何更改都没有改变......

说实话,这对我来说是完全合理的,因为没有任何形式可以区分它们,也没有任何独特的id或类似的产品模型也不包含那些领域......我在旧经典中的方式asp将使用其唯一的Id命名字段,然后创建一个SQL更新查询,在提交表单时更新每个子模型。我想我也可以在这里实施这样的做法,但感觉不是正确的做法。

对于这种事情,MVC中是否有适当的或“最佳实践”方法?

0 个答案:

没有答案