【发布时间】:2012-12-12 16:50:15
【问题描述】:
我有一个视图和一个模型(比如 Car)。表单中的一个字段是可编辑的(仅显示其他信息)。当视图表单发布时,我需要所有信息,而不仅仅是可编辑属性。但是所有其他属性都是空的。
我曾经创建隐藏字段来发布数据,但是当你的隐藏字段比非隐藏字段多时,它会产生非常脏的代码。
有没有办法在不使用隐藏字段的情况下发布模型的所有属性?
【问题讨论】:
-
是什么让您认为隐藏字段未被占用?
-
看来您必须使用 ViewModel 模式并接受 CarViewMode 实例(只有必需/可编辑的字段)而不是 Car。你可以将 CarViewModel 映射到 Car 对象。更多信息在这里:msdn.microsoft.com/en-us/…
-
将不可编辑的字段传递给客户端并返回不是这样做的方法。它效率低下(传输所有数据只是为了让您的生活更轻松)和安全风险(好奇的用户更改值您没想到会改变)。在服务器上管理合并要好得多。
-
@SimonHalsey 如果服务器端编码良好,则没有安全风险:例如,如果您没有使用来自客户端的所有值更新实体,但您有一个服务只更新允许更新的内容(editable property by editable property),没有问题。
-
@ken2k 你是对的,但我认为如果我们往返所有数据以保存重新加载它,我们可能不会检查我们正在保存的字段。
标签: c# asp.net-mvc asp.net-mvc-3