我们正在开发大型 MVC 项目,我们打算使用 HttpSessionStateWrapper(以及 HttpRequestWrapper、HttpResponseWrapper 等)来添加扩展功能来执行此对象。它将添加会话消息、额外的集合、带有响应的 html 元数据——诸如此类的东西,可从控制器管理并在需要时在视图中访问。
我在一个较小的项目中完成了它,它通常运行良好,除了这里和那里的一些铸造问题,但它可以通过不使用控制器外部的包装器或最终视图来解决。每个控制器都将是一个自定义控制器,其代码如下:
public class Controller : System.Web.Mvc.Controller
{
public new CustomHttpResponse Response
{
get
{
return (CustomHttpResponse)HttpContext.Response;
}
}
public new CustomHttpRequestRequest
{
get
{
return (CustomHttpRequestRequest)HttpContext.Request;
}
}
//etc...
}
ContextWrapper 将在自定义 MvcHandler 中创建。响应、请求和会话包装器将被创建并取自 ContextWrapper 。
这是使用包装器扩展功能的好策略,还是仅用于创建测试模拟?