2

我正在创建自己的自定义 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)从发布的表单值中获取属性值?

B)将此值注入属性?

我尝试在 DefaultModelBinder 类上运行 Reflector 以查看它是如何做到的,但代码非常混乱。

我需要以前做过这件事的人来引导我完成它。

4

1 回答 1

3

bindingContext参数包含一个 ValueProvider 属性,该属性已经填充了请求中的值。这个想法是你从中提取价值。

它只是一个值字典,因此您可以使用要绑定的字段的名称对其进行索引。

了解正在发生的事情的最简单方法是应用您的自定义 ModelBinder,然后在您的代码中设置一个断点并检查您在调试器中获得的数据。

于 2009-10-07T03:36:23.253 回答