2009-12-13 106 views
2

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

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

我确定这是简单的我很想念,所以任何指向哪里看都会有所帮助。如果有帮助,我可以粘贴一些代码。

谢谢!

回答

3

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

+0

对,我想我现在已经正确地把我的头拧紧了,并且看到第二次调用构造函数不是我的问题(感谢有关此背景的信息)。我仔细检查了所有的元素名称,我似乎已经整理出来了,这是我的问题(我调整了我的模型数据,并在视图中错过了一些相应的元素名称更改)。非常感谢所有人的帮助。仍然无法从下拉菜单中获取值,但我将单独发布并包含一些代码。 Chris – Chris 2009-12-14 00:26:37

0

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

0

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

相关问题