保持asp.net mvc控制器大小

我有一个控制器。 “OrderController”。目前它是1800线。我喜欢减小尺寸。我正在使用静态帮助器方法,这很好,但我使用ninject来调用我的存储库,因此无法在不传递属性的情况下访问静态方法中的存储库。 有哪些降低控制器噪音的好方法?     
已邀请:
如何获得一个瘦控制器 重构可重用的功能,可以应用于多种类型的输出到
ActionFilters
。后果:重复性较低的代码,较薄的控制器操作,更快的未来开发 重构可重用的功能,适用于特定类型的输出到自定义
ActionResult
。后果:重复性较低的代码,较薄的控制器操作,更快的未来开发 利用
ModelBinders
将输入值绑定到注入
Controller
操作的复杂对象。结果:您不需要在控制器中处理实际的HTTP输入(RouteData,Form值,查询字符串参数)。您还可以在模型绑定器中处理数据验证。 通过自定义
ControllerFactory
实现依赖注入。结果:您不需要在Controller中构建服务。 将具有过多Controller操作的单个控制器重构为多个控制器。后果:您的代码变得更易于维护。 将静态辅助方法移动到静态类。结果:您的方法可以被多个控制器重用,并且您在Controller中的代码更少,因此更容易维护和更改您的应用程序。 其他说明 存在大量开源资源来帮助完成这些任务。我绝对建议调查MvcContrib项目。它们具有
FluentController
基类,其设计考虑了构建精简控制器。此外,我赞成Darin因为他推荐的视频很有用,所以请查看     
你的控制器中不应该有那么多代码。我怀疑你没有把你的担忧分开。 我会看看并思考这个问题的答案: ASP.NET MVC模式 简而言之: 将复杂性放入执行明确目的的Service类中,即提供控制器所需的内容。 控制器应该只有应用程序逻辑,即它应该只是作为一种空中交通,嗯,控制器,以这种方式发送请求和基于应用程序逻辑。简而言之,这几乎就是它的功能。其他东西不属于控制器。 我的控制器看起来像:
[Authorize(Roles="Admin, Tutor, Pupil")]
public partial class CourseController : Controller
{
    ICourseDisplayService service;
    public CourseController(ICourseDisplayService service)
    {
        this.service = service;
    }

    public virtual ActionResult Browse(int CourseId, string PupilName, string TutorName)
    {
        service.Initialize(CourseId, 1, PupilName, TutorName, User);
        service.CurrentStepOrder = service.ActiveStepIndex;
        if (Request.IsAjaxRequest())
        {
            return PartialView(MVC.Courses.Course.Views._Display, service.ViewModel);
        }
        else
        {
            return View(MVC.Courses.Course.Views.Display, service.ViewModel);
        }
    }
请注意控制器构造函数中的服务实例化以及操作中对服务的调用。     
1800线!!!!!!!!!神的圣洁母亲。我建议你观看下面关于让你的控制器节食的视频。     

要回复问题请先登录注册