Подтвердить что ты не робот

Ручная привязка модели с .Net Mvc

Мне интересно, есть ли способ использовать встроенную привязку к модели, похожую на внутреннюю привязку модели, которая возникает перед действием контроллера.

Моя проблема в том, что я хочу иметь возможность контролировать привязку, поскольку я не буду знать тип объекта для привязки до тех пор, пока я не нахожусь в контексте действия контроллера.

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

public ActionResult DoCustomBinding(string modelType)
{
    ... // logic to determine type to check and create strong 'actual' type

    object model = BindModel(actualType);

    ... // do something with bound model

    return View();
}

Я изучил использование DefaultModelProvider, но не уверен, что это правильный способ обойти это, и я не был уверен, как получить ModelBindingContext.

4b9b3361

Ответ 2

Вы просматриваете интерфейс IModelBinder?

public class CustomModelsBinder : IModelBinder {
    public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) { }
}

И затем добавьте это в свой файл global.asax:

protected override void OnApplicationStarted() {
   ModelBinders.Binders.Add(typeof(CustomModels), new CustomModelsBinder());
}

Ответ 3

Если вы хотите проверить только определенные части модели, это может быть дубликат вопроса, который я ранее ответил Обновления частичной модели MVC.

Прохладная часть об использовании System.ComponentModel.DataAnnotations.MetadataType заключается в том, что связующее устройство будет привязываться к производному объекту, который в основном такой же, как базовый объект, только с различными метаданными отображения/проверки.