【问题标题】:MVC controller differences between this.Response and this.HttpContext.Responsethis.Response 和 this.HttpContext.Response 之间的 MVC 控制器区别
【发布时间】:2014-03-02 14:51:29
【问题描述】:

MVC 控制器也有很多对象存在于 HttpContext 子对象中。这些对象之间有什么区别?

        var res = HttpContext.Response;
        var res1 = Response;

        var req = HttpContext.Request;
        var req1 = Request;

【问题讨论】:

    标签: c# asp.net-mvc dotnet-httpclient


    【解决方案1】:

    Controller 类的RequestResponse 属性实际上只是返回HttpContext.RequestHttpContext.Response。两者没有区别。 Controller 属性的存在实际上是为了简洁,以避免使用 HttpContext.Request / HttpContext.Result

    你可以在source code看到它:

    public abstract class Controller 
    {
        // ...
    
        public HttpRequestBase Request
        {
            get { return HttpContext == null ? null : HttpContext.Request; }
        }
    
        public HttpResponseBase Response
        {
            get { return HttpContext == null ? null : HttpContext.Response; }
        }
    
        // ...
    
    }
    

    但是,您应该使用 Controller 属性,因为它们与 MVC 直接相关,而不是 System.Web.dll 堆栈。如果将来 MVC 框架在 Request / Response 对象模型方面发生了变化,从而删除了与 System.Web 和 HttpContext 类的依赖关系,则 Request 和 @987654334 @ 的 Controller 本身应该直接反映实际情况,并且需要较少更改您的代码(尽管我认为我们不太可能在不久的将来看到这种重大变化)。

    【讨论】:

      猜你喜欢
      • 2017-06-10
      • 1970-01-01
      • 2012-04-02
      • 1970-01-01
      • 1970-01-01
      • 2011-04-05
      • 1970-01-01
      • 2019-06-27
      • 2013-09-10
      相关资源
      最近更新 更多