【问题标题】:Submit passed ViewModel value, if there is no Field in the Form for it提交传递的 ViewModel 值,如果表单中没有字段
【发布时间】:2017-07-27 23:52:18
【问题描述】:

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

当普通用户提交表单时,所有数据都会正确传递,但模型中的管理字段的值具有默认值(false)。如果该值在动作之前为真,则该值将被更改,但用户应该不能这样做。

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

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

【问题讨论】:

    标签: forms asp.net-core-mvc


    【解决方案1】:

    没有代码,很难准确地说出问题出在哪里,但总的来说,如果您正确处理发布数据,就不会出现任何问题。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-21
      • 1970-01-01
      • 2021-04-30
      • 2011-10-01
      • 2020-01-27
      • 2010-11-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多