我正在创建自己的自定义ModelBinder,它继承自DefaultModelBinder,并手动绑定XElement类型的属性。
现在看来我必须覆盖'BindProperty'方法,如下所示:
protected override void BindProperty(
ControllerContext controllerContext,
ModelBindingContext bindingContext,
System.ComponentModel.PropertyDescriptor propertyDescriptor)
{
if (propertyDescriptor.PropertyType == typeof(XElement))
{
// code here to take the POST-ed form value and put it in the property as an XElement instance
}
else
base.BindProperty(controllerContext, bindingContext, propertyDescriptor);
}
我应该使用什么代码:
A)从发布的Form值中获取属性的值?
B)将此值注入属性?
我尝试在DefaultModelBinder类上运行Reflector来查看它是如何做到的,但代码非常混乱。
我需要有人这样做才能引导我完成它。
答案 0 :(得分:3)
bindingContext 参数包含一个ValueProvider属性,该属性已使用请求中的值填充。我们的想法是从中提取值。
它只是一个值字典,因此您可以使用要绑定的字段的名称对其进行索引。
了解goint的最简单方法是应用自定义ModelBinder,然后在代码中设置断点并检查调试器中的数据。