Custom Model Binder не стреляет - PullRequest
       11

Custom Model Binder не стреляет

1 голос
/ 06 апреля 2010

Это моя пользовательская модель переплета. У меня установлена ​​точка останова на BindModel, но не запускается это действие контроллера:

public ActionResult Create(TabGroup tabGroup)

...

public class BaseContentObjectCommonPropertiesBinder : DefaultModelBinder
{
    public new object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
    {
        if (controllerContext == null)
        {
            throw new ArgumentNullException("controllerContext");
        }
        if (bindingContext == null)
        {
            throw new ArgumentNullException("bindingContext");
        }

        BaseContentObject obj = (BaseContentObject)base.BindModel(controllerContext, bindingContext);
        obj.Modified = DateTime.Now;
        obj.Created = DateTime.Now;
        obj.ModifiedBy = obj.CreatedBy = controllerContext.HttpContext.User.Identity.Name;
        return obj;
    }

Моя регистрация:

// пробовал обе эти строки

ModelBinders.Binders[typeof(TabGroup)] = new BaseContentObjectCommonPropertiesBinder();
ModelBinders.Binders.Add(typeof(TabGroup), new BaseContentObjectCommonPropertiesBinder());

1 Ответ

7 голосов
/ 06 апреля 2010

Это потому, что вы использовали ключевое слово «new» в методе BindModel. «Новый» означает, что метод не будет участвовать в виртуальном вызове (подробнее о полиморфизме вы можете прочитать здесь .

Замените "new" на "override", и оно должно работать нормально.

public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
    //your stuff
}
...