【发布时间】:2019-09-15 10:04:25
【问题描述】:
我有一个具有 10 个属性的模型。此信息存储在具有 10 个字段的数据库表中。假设每个属性都与表格列匹配。
我有一个使用这个模型的视图。此视图仅使用 10 个属性中的 4 个属性。用户将仅编辑这 4 个属性。当我把它发回来。我只获取这 4 个属性的值,因为这些是绑定到视图的唯一字段。所有其他属性为空。我没有使用任何 HTML 隐藏标签来绑定其他属性。因此,[HttpPost] ControllerAction 中的其他属性为空。
我的问题是,
有没有一种简单的方法可以从这 10 个属性中识别出哪些 4 个属性绑定到视图,而这些是我需要在数据库中更新的唯一属性。
换句话说,“ModelState”是否知道 View 中绑定了哪些属性? 要么 是否有其他类可以准确地告诉我哪些字段绑定到该“视图”,以便我可以编写代码来仅更新数据库中的那些字段。
【问题讨论】:
-
创建一个“编辑模型”类,您可以在其中选择要保存到数据库的任何属性
-
我想过这样做。如果我有四个不同的视图更新四组不同的属性(3、3、2、2),那么我最终会得到 4 个额外的“编辑模型”类,这是我想避免的。我只想使用一个模型,并且仍然在不同的视图中巧妙地处理它。
-
这就是要走的路,它可能看起来很多,但它比一个大魔术课要好。它只是变成了汤
标签: c# asp.net-mvc model-view-controller model-binding asp.net-core-2.1