我有一个对象,里面定义了一个列表,指向一个可以继承的类型。根据我的理解,MVC的默认模型绑定器总是在从表单读回数据时实例化基类型,因此默认情况下我会有一个基类型列表。
所以我需要使用自己的模型绑定器并覆盖CreateModel
来实例化特定类型(例如来自隐藏字段)。但是当我这样做并使用
bindingContext.ValueProvider.GetValue("ModelType")
它总是返回null
,即使通过使用fiddler我可以看到表单值Settings[0].ModelType
包含我的对象类型,我需要CreateModel
中的这个值来实例化正确的类型。
答案 0 :(得分:0)
解决了它。如果需要根据每个项目键入数组对象,则需要使用以下调用来“进入”数组项
bindingContext.ValueProvider.GetValue(bindingContext.ModelName + ".ModelType")
我不确定这是否是标准的做法。如果有人有任何更好的建议随时添加它们