1

我有一个视图和一个模型(比如汽车)。表单中的一个字段是可编辑的(仅显示其他信息)。当视图表单发布时,我需要所有信息,而不仅仅是可编辑属性。但是所有其他属性都是空的。

我曾经创建隐藏字段来发布数据,但是当你的隐藏字段比非隐藏字段多时,它会产生非常脏的代码。

有没有办法在不使用隐藏字段的情况下发布模型的所有属性?

4

3 回答 3

5

您应该只使用带有可编辑字段的 ViewModel。在视图中,只需将模型的 id 作为隐藏字段放在数据库中。

在您的控制器中,从数据库中获取模型。然后检查您是否确实可以修改此项目(例如,有人可以使用 Firebug 更改隐藏字段中的 id)。

然后,只需使用 ViewModel 中的字段更新数据库模型...并再次将模型保存到数据库。

如果您在视图中使用您的 CAR 模型,有人可能会更改比您允许的更多的字段......如果您使用 CarViewModel,这是不可能的,因为模型绑定器只会绑定视图模型的属性。

于 2012-12-12T17:01:41.870 回答
2

以 html 形式发布的数据是输入的内容。如果您在帖子上需要这些数据,我认为隐藏字段没有问题,这就是隐藏字段的用途。

话虽如此,如果您真的想减少隐藏字段的数量,您可以在一个字段中“序列化”所有这些信息,然后在帖子中“反序列化”它。或者在自定义模型绑定器中。

但是,如果您想要在 Asp.Net MVC 中开箱即用的 ModelBinder 的魔力,则必须使用表单字段。

于 2012-12-12T16:54:21.723 回答
-1

如果您反对将信息发布在隐藏字段中,另一种选择是将它们包含在查询字符串中。

于 2012-12-12T16:54:24.350 回答