Могу ли я зарегистрировать привязку пользовательской модели где-нибудь, кроме Global.asax? - PullRequest
5 голосов
/ 15 июня 2010

Было бы удобно ограничить область действия привязки пользовательской модели только для конкретного метода действия контроллера или всего контроллера. Хансельман написал предложение, которое подразумевало альтернативные местоположения для регистрации пользовательского связующего, но, казалось, никогда не заканчивало мысль:

Вы можете либо поставить этот пользовательский связыватель модели, отвечающий за все ваши даты / даты, зарегистрировав его в Global.asax

Можно ли сделать эти регистрации в меньшем объеме системы контроллера? Если да, есть ли причина избегать этого вне приложения Global.asax MvcApplication (например, из-за соображений производительности)?

1 Ответ

6 голосов
/ 15 июня 2010

Когда я закрывал вкладки, которые я открыл для этого вопроса, который я не достиг, прежде чем сдаться, я нашел кого-то с ответом . Вы можете присвоить ModelBinderAttribute вашим моделям вида:

[ModelBinder(typeof(SomeEditorModelModelBinder))]
public class SomeEditorModel {
    // display model goes here
}
public class SomeEditorModelModelBinder : DefaultModelBinder {
    // custom model binder for said model goes here
}

Хотя это было не совсем то, что я искал, это даже более конкретно, чем регистрация его для контроллера или метода контроллера.

Обновление

Благодаря комментарию Леви, указывающему на гораздо лучшее решение. Если вы используете объект с привязкой пользовательской модели непосредственно в методе действия MVC, вы можете просто украсить параметр этого метода свойством ModelBinder.

public ActionResult SomeMethod([ModelBinder(typeof(SomeEditorModelBinder))]SomeEditorModel model) { ... }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...