【问题标题】:Kendo Grid populates and posts all of the navigation propertiesKendo Grid 填充并发布所有导航属性
【发布时间】:2015-05-06 05:23:01
【问题描述】:

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

问题是,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; }
}

【问题讨论】:

  • 您是否以其他方式解决了您的问题?
  • 不,很遗憾我没有找到其他方法。我的类有很多字段,为所有字段创建视图模型真的很痛苦。
  • 总是可以使用visualstudiogallery.msdn.microsoft.com/… 生成它们;)

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


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多