调整asp.net mvc
我真的很喜欢 Fubu MVC 的“一模型输入 - 一模型输出”理念。 控制器看起来像这样
public class MyController
{
public OutputModel MyAction(InputModel inputModel)
{
//..
}
}
,服务定位器会自动填充构造函数中所有必需的依赖项。
这使得控制器非常容易测试。
所以我的问题是:您将如何调整 asp.net mvc 以允许控制器中的这种简单性?
I really love the "one model in - one model out" idea of Fubu MVC. A controller would look something like this
public class MyController
{
public OutputModel MyAction(InputModel inputModel)
{
//..
}
}
and the service locator would automagically fill in all the required dependencies in the constructor.
This makes the controller very easy to test.
So my question is: How would you go about tweaking asp.net mvc to allow this simplicity in the controllers ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(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
What you're looking for the is the ControllerActionInvoker. You'll have to implement your own and override/take over handling a lot of the pipeline work that ASP.NET MVC.
For reference, check out Jonathon Carter's 2-part post on doing ControllerActionInvokers:
http://lostintangent.com/2008/07/03/aspnet-mvc-controlleractioninvoker-part-1/
and
http://lostintangent.com/2008/07/07/aspnet-mvc-controlleractioninvoker-part-2/
Also, the Oxite team did this in the 2nd release of Oxite, you can check out their source here:
http://oxite.codeplex.com/SourceControl/changeset/view/30544
Here's a link directly to their ControllerActionInvoker implementation:
http://oxite.codeplex.com/SourceControl/changeset/view/30544#442766
从未真正深入了解 ASP.NET MVC 内部结构,但我想自定义 ModelBinder 和 ActionResult 可以完成这项工作。
Never really dug deep inside ASP.NET MVC internals, but I guess custom ModelBinder and ActionResult will do the job.