有人可以帮助我更好地理解 DefaultModelBinder 以及它如何处理绑定具有对象类型属性的模型吗?
我已经下载了代码并尝试跟踪它,但我仍然有点摸不着头脑。
假设我有一个这样的模型:
public class MyModel{
public object MyProperty{ get; set; }
}
并假设我的表格都是正确生成的(例如:name="MyModel.MyProperty")
对于实际上将 MyProperty 设置为某些类型的实例的各种情况会发生什么?
在我的例子中,我从 DefaultModelBinder 派生了一个自定义活页夹并重写 CreateModel() 以返回一个 MyModel,并将 MyProperty 设置为正确的类型。
我注意到如果我将 MyProperty 设置为一个字符串,那么由于某种原因 DefaultModelBinder::BindProperty() 会返回一个大小为 1 的字符串 [],其中包含表单字段的内容,而不仅仅是一个字符串。为什么?
如果 MyProperty 是一些更复杂的类型,即使我的表单字段都被正确命名(例如:name="MyModel.MyProperty.FirstName"),绑定似乎根本不起作用。
以前有没有人处理过这样的复杂/抽象模型绑定场景?有没有更好的办法?(我知道这很奇怪,但我确实需要让 MyModel 的 MyProperty 成为对象,因为直到运行时我才知道它实际上是什么类型)