发布不可编辑的值

时间:2012-12-12 16:50:15

标签: c# asp.net-mvc asp.net-mvc-3

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

我曾经创建过隐藏字段来发布数据,但是当你拥有比非隐藏字段更多的隐藏字段时,它会使代码变得非常脏。

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

3 个答案:

答案 0 :(得分:5)

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

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

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

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

答案 1 :(得分:2)

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

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

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

答案 2 :(得分:-1)

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