Каково различие между BindProperty и SetProperty на IModelBinder

Я создаю пользовательский образцовый редактор связей в приложении Mvc, и я хочу проанализировать строку к перечислимой величине и присвоить ее свойству модели. У меня есть он работа, переопределяющая BindProperty метод, но я также заметил, что существует a SetProperty метод.

    protected override void BindProperty(ControllerContext controllerContext, ModelBindingContext bindingContext, System.ComponentModel.PropertyDescriptor propertyDescriptor)
    {
        switch (propertyDescriptor.Name)
        {
            case "EnumProperty":
                BindEnumProperty(controllerContext, bindingContext);
                break;
        }

        base.BindProperty(controllerContext, bindingContext, propertyDescriptor);
    }

    private static void BindEnumProperty(ControllerContext controllerContext, ModelBindingContext bindingContext)
    {
        var formValue = controllerContext.HttpContext.Request.Form["formValue"];

        if (String.IsNullOrEmpty(formValue))
        {
            throw new ArgumentException();
        }

        var model = (MyModel)bindingContext.Model;
        model.EnumProperty = (EnumType)Enum.Parse(typeof(EnumType), formValue);
    }

Я не уверен, что различие между двумя и делаю ли я это рекомендуемым способом.

11
задан Andy McCluggage 11 February 2010 в 15:51
поделиться