我已经确定我的控制器有些混乱,并决定采用一个WebAPI项目中使用的管道样式的系统。该管道由行动,即得到越来越普遍,即:ViewAccountDetailsAction
> AccountAction
> AuthenticatedAction
> EmptyAction
。这些动作都按继承顺序添加到子管道,并公开成员或针对不同场景的抽象方法。
我的问题在于如何从管道元素返回视图。在WebAPI示例中,返回一个IHttpActionResult
不需要执行任何视图呈现的操作非常简单,但是,需要MVC通过Razor的附加步骤以不同的方式呈现其响应。
由于Controller公开了internal protected
诸如View()
或的辅助方法RedirectToAction
,因此我无法在控制器本身之外使用这些方法。
是否有一种优雅的方法来渲染这些内容?我已经看到了几种解决方法,每种方法要么麻烦,要么给我不舒服的感觉。
目前,我最喜欢的方法是使internal
基类隐藏受保护的方法,并使它们成为内部对象,同时调用基方法。然后将控制器实例提供给实例化操作。这有什么过分的错误吗?我想不出任何可虐待的案件,但想看看是否有任何社区对此事达成共识。