【发布时间】:2014-11-11 16:41:24
【问题描述】:
我有一个具有以下属性的模型:
public class MyModel{
public object Name{get;set;}
}
Name 属性在 MVC 表单上呈现为文本框。当提交 MVC 表单时,Name 属性设置为 Array[String] 类型,长度为 1,其中包含我的值。为什么模型绑定器会创建数组,而不仅仅是将属性设置为字符串对象?
很遗憾,我无法更改该属性的返回类型,因为该属性位于第三方代码中。
更多信息:
我们有两个站点,一个站点将属性绑定为字符串,另一个站点将其绑定为 Array[String]。查看堆栈跟踪,两个绑定事件都通过默认模型绑定器。所以我们遇到的问题是我们的第一个环境与我们的第二个环境有什么不同?两者都使用相同的程序集版本和配置。
【问题讨论】:
-
你能出示你的
View吗? -
这可能只是 DefaultModelBinder 的行为。您可能可以通过实现自己的 IModelBinder 来自定义它,该 IModelBinder 可以为对象类型的模型属性执行您想要的操作。
-
经过进一步调查(大量反编译和咒骂),我们发现第三方代码中隐藏了一个 DI 容器,它没有正确解析字段绑定器。感谢你们阅读并评论了这个问题。
标签: c# asp.net-mvc asp-classic asp.net-mvc-5