Тонкая настройка asp.net mvc
Мне действительно нравится идея Fubu MVC "одна модель в одной модели". Контроллер будет выглядеть примерно так
public class MyController
{
public OutputModel MyAction(InputModel inputModel)
{
//..
}
}
и локатор службы будет автоматически заполнять все необходимые зависимости в конструкторе.
Это делает контроллер очень простым для тестирования.
Итак, мой вопрос: как бы вы настроили asp.net mvc для обеспечения такой простоты в контроллерах?
2 ответа
То, что вы ищете, это ControllerActionInvoker. Вы должны будете реализовать свою собственную и переопределить / взять на себя обработку большей части конвейерной работы, что ASP.NET MVC.
Для справки, ознакомьтесь с 2-частной записью Джонатона Картера о выполнении ControllerActionInvokers: http://lostintangent.com/2008/07/03/aspnet-mvc-controlleractioninvoker-part-1/
а также
http://lostintangent.com/2008/07/07/aspnet-mvc-controlleractioninvoker-part-2/
Кроме того, команда Oxite сделала это во втором выпуске Oxite, вы можете проверить их источник здесь:
http://oxite.codeplex.com/SourceControl/changeset/view/30544
Вот ссылка непосредственно на их реализацию ControllerActionInvoker: http://oxite.codeplex.com/SourceControl/changeset/view/30544
Никогда не копался глубоко внутри ASP.NET MVC, но я думаю, что пользовательские ModelBinder и ActionResult сделают эту работу.