如果表单中没有字段,则提交传递的ViewModel值

时间:2017-07-27 06:32:51

标签: forms asp.net-core-mvc

我有一个带有ViewModel和几个(可能是预填充)字段的表单。其中一个字段(复选框)只能由管理员访问,而不适用于普通用户。我用@Html.TextboxFor(...)创建了我的字段。

当普通用户提交表单时,所有数据都将正确传递,但模型中admin-field的值具有默认值(false)。如果在操作之前值为true,则值将更改,但用户不应该执行此操作。

如果没有Checkbox,如何从给定的ViewModel提交值,Controller会将其发送到View进行预填充?

注意:   我不想为普通用户和管理员创建两个表单。 用户也可以更改复选框值的隐藏字段。

1 个答案:

答案 0 :(得分:1)

如果没有代码,很难准确说出问题的确切位置,但总的来说,如果您正确处理发布数据,则不会有任何问题。

您提到了一个视图模型,但如果您实际上使用的是视图模型,则不清楚为什么会出现问题。如果您不希望发布数据的布尔值重置,则只需将该属性映射到您的实体类。如果您正在使用某种自动映射来执行此操作,那么您应该将该属性设置为忽略,以便不包含它。

此外,您应确保从现有实体开始,从数据库中提取新内容,在这种情况下,将布尔值设置为true。然后,当您映射视图模型中的值(不包括此布尔属性)时,它将保持为true。如果您正在基于视图模型创建一些新实例,则无法知道它最初是真的。