Kendo Grid填充并发布所有导航属性

时间:2015-05-06 05:23:01

标签: c# .net asp.net-mvc entity-framework kendo-asp.net-mvc

我有一个Kendo UI Grid,它使用Serial类作为模型。此类与row类有关系,但我不使用网格中的任何导航属性,而且我不需要在此特定页面中使用它们。

问题是,Kendo UI填充了所有外键关系。因此将填充row类及其自身的所有导航属性。当我尝试保存我的编辑时,Kendo会发布所有这些数据,这会导致ModelState.IsValid始终为false。你有什么建议吗?

这是Serial类,我为每个属性都有一个字段。

public class Serial
{
    [Key]
    [Column(TypeName = "BIGINT", Order = 0)]
    public Int64 LiIdR { get; set; }
    [ForeignKey("LiIdR")]
    public virtual Rows Row { get; set; }

    [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public Int16 SRadifS { get; set; }
    public string AFromSerial { get; set; }
    public string AToSerial { get; set; }
    public int? IQnty { get; set; }
    public string AExpireDate { get; set; }
    public string AComment { get; set; }
}

1 个答案:

答案 0 :(得分:1)

在视图中使用生成的Entity Framework对象通常是一种不好的做法。您的视图不应该依赖于数据访问层。

您应该做的是将EF实体转换为业务/数据层中的视图模型(仅包含您的网格需要的内容)。这将解决您的问题。

在编辑/创建时,您只需将视图模型转换回EF对象并将更改保存到数据库中。

如果出于某种原因,您的视图需要您不希望向用户显示的某些属性,则可以将它们作为Hidden()列添加到网格中。然后他们会被贴回到控制器。