MVC View POST调用新构造函数而不是传回模型

时间:2009-12-13 01:50:18

标签: c# asp.net-mvc

我有一个视图,它将一堆数据添加到绑定的EditModel中。但是,当它被POST时,由于某种原因,在调用POST Action之前调用无参数构造函数,而不是仅传回绑定到视图的模型。

我认为我所要做的就是确保我在视图顶部的“Inherits”标签中引用模型,但由于某种原因,所有填充的数据都会在POST上被抛弃实例化模型的实例。 View肯定能够看到模型,因为我可以使用Visual Studio Intellisense来访问模型字段。

我确信这是我想念的简单事情,所以任何关于在哪里寻找的指示都会有所帮助。如果它有帮助,我可以粘贴一些代码。

谢谢!

3 个答案:

答案 0 :(得分:3)

正如Omu所说,它将始终使用默认的模型绑定器调用无参数构造函数。基本上,模型绑定器根据元素名称从表单集合中填充公共元素(如果定义,可以加上前缀)。您需要确保您的元素名称(而不是ID)与您希望在模型上填充的公共成员匹配。

答案 1 :(得分:0)

它被调用的构造函数,因为它应该发生什么,现在看看为什么你的模型没有填充数据,如果发布视图代码和发布动作将会非常有用。

答案 2 :(得分:0)

这不是MVC的工作方式。发布表单时,MVC构造新的EditModel对象并使用表单中提供的值填充它。它不保留EditModel,用于在GET操作中填充视图。您必须确保要在POST方法中使用的每个值都在GET中的html输入中设置。