我真的很喜欢Fubu MVC的“一个模型 - 一个模型”的想法。控制器看起来像这样
public class MyController
{
public OutputModel MyAction(InputModel inputModel)
{
//..
}
}
并且服务定位器将自动填充构造函数中所有必需的依赖项。
这使控制器非常容易测试。
所以我的问题是:你如何调整asp.net mvc以便在控制器中实现这种简单性?
答案 0 :(得分:2)
您正在寻找的是ControllerActionInvoker。您必须实现自己的并重写/接管处理ASP.NET MVC的许多管道工作。
作为参考,请查看Jonathon Carter关于做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#442766
答案 1 :(得分:0)
从未在ASP.NET MVC内部深入挖掘,但我猜自定义ModelBinder和ActionResult将完成这项工作。