Связыватель модели по умолчанию всегда создает экземпляр? - PullRequest
1 голос
/ 05 февраля 2011

У меня есть действие, которое выглядит так:

    public ActionResult Index(Home document) {

        return View(new BaseViewModel<Home>(document, _repository));
    }

, но хотя RouteData.Values ​​["document"] не существует, связыватель модели создает экземпляр Home.Можно ли указать связующему модели дать мне значение NULL, если документ имеет значение NULL?

1 Ответ

2 голосов
/ 05 февраля 2011

Вам может понадобиться пользовательский механизм связывания модели, если вы хотите изменить это поведение по умолчанию:

public class MyModelBinder : DefaultModelBinder
{
    protected override object CreateModel(ControllerContext controllerContext, ModelBindingContext bindingContext, Type modelType)
    {
        // TODO: decide if you need to instantiate or not the model
        // based on the context
        if (!ShouldInstantiateModel)
        {
            return null;
        }
        return base.CreateModel(controllerContext, bindingContext, modelType);
    }
}

и затем:

public ActionResult Index([ModelBinder(typeof(MyModelBinder))] Home document) 
{
    return View(new BaseViewModel<Home>(document, _repository));
}

или зарегистрировать его глобально в Application_Start:

ModelBinders.Binders.Add(typeof(Home), new MyModelBinder());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...