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