使用Tag Helpers在Razor Page上的表单中模型绑定失败

时间:2019-06-25 13:07:34

标签: asp.net-core

我的页面后面有一个模型,该模型的属性是我的搜索表单的模型。我的表单运行正常,然后突然所有属性停止绑定,我的Post操作处理程序看到搜索表单模型的负载为null

1 个答案:

答案 0 :(得分:0)

在为表单使用“标记助手”并添加输入控件时,可以为每个控件添加自己的name="myProperty",也可以忽略此属性,并且此属性是自动生成的。

想象一下,您有10个输入,并且添加了一个新输入,但是忘记在最近的输入上添加一个name属性,然后该助手添加了自己的属性,例如“ SearchForm.MyProperty”。

前10个以name="myProperty"结尾,但最后一个是name="SearchForm.MyProperty"

在这种情况下,模型绑定失败,大概是,因为这些路径是混合的,并且一个匹配的SearchForm.MyProperty更具体,使得其他路径看起来应该绑定到页面模型的属性

大概是当您提供自己的名称并且它们都缺少SearchForm.前缀时,那么它的聪明之处就足以找出将它们全部绑定到SearchForm的地方。

修复可能根本不向输入提供您自己的name属性。

对Razor绑定的改进(以消除此处的意外)可能会始终失败,除非名称正确地加上前缀,尽管这样会破坏现有代码。