我有一个没有参数的动作。我在视图中有一个表单,它可以执行此操作。在操作中,我实例化了一个对象(这样我就可以从DB获得一些默认值),然后我对它使用UpdateModel(),它使用DefaultModelBinder。
因此,我的模型具有以下属性def:
public string[] AI { get; set; }
我的querystring以及表单中的其他内容包含:
?AI=12-345&AI=45-43&AI=48-546
在操作调用UpdateModel()之后,AI属性为空!但是,如果我将操作定义更改为:
MyAction(string[] AI)
然后填充AI参数,就像我期望的模型属性一样。这是默认模型绑定器中的错误吗?我尝试将属性设置为List<string>
,但也不起作用。
有什么想法吗?
发布于 2012-10-31 19:14:37
我生命中最伟大的荷马神迹。我所做的一切都很好,如果像我在我的帖子中所说的那样使用DefaultModelBinder,MVC就可以很好地绑定它;然而,向需要绑定的模型添加额外的值也无法绑定(简单的bool?)我深入挖掘,发现MVC已经为该模型的类型注册了一个自定义绑定器,它为模型上的每个属性做一些事情,因此对我的新属性不做任何事情:(.
所以这个故事的寓意是不要忘记检查活页夹注册,或者只是不使用注册并总是显式地声明。
https://stackoverflow.com/questions/13120389
复制相似问题