我有一个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; }
}
答案 0 :(得分:1)
在视图中使用生成的Entity Framework对象通常是一种不好的做法。您的视图不应该依赖于数据访问层。
您应该做的是将EF实体转换为业务/数据层中的视图模型(仅包含您的网格需要的内容)。这将解决您的问题。
在编辑/创建时,您只需将视图模型转换回EF对象并将更改保存到数据库中。
如果出于某种原因,您的视图需要您不希望向用户显示的某些属性,则可以将它们作为Hidden()
列添加到网格中。然后他们会被贴回到控制器。