我定义了一个ViewModel,它表示所需的属性。使用此ViewModel定义带有剃刀的视图。
HttpPost操作获取ViewModel作为参数。如果使用Request进行检查,我可以看到POST命令中的所有参数。Form.AllKeys以及在操作参数中,即ViewModel。
如果我更改ViewModel类,即去掉一些属性,或者添加一些属性并在视图中使用它们,一切都会很好。
只有一个布尔属性我不能删除,而不会在视图中留下一个带有该属性id的隐藏输入字段。
如果我删除它,HttpPost操作中的ViewModel参数在单击视图中的复选框时不会获得ViewModel的所有布尔属性的更改,但我可以用Request看到。Form.all对POST命令中的所有参数进行键控。
我不明白那里发生了什么。
我已经找到了导致错误的原因。处理复选框单击的javascript代码仍然包含已删除ID的函数。这迫使javascript代码停止运行其他函数,而其他复选框则保持旧的状态==false。因此,ViewModel中这些属性的值从未更改。