1

我们正在开发大型 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 。

这是使用包装器扩展功能的好策略,还是仅用于创建测试模拟?

4

0 回答 0