ASP.NET MVC获取表单值的两种不同方法

本文关键字:两种 方法 NET MVC 获取 表单 ASP | 更新日期: 2023-09-27 18:28:40

我正在创建自己的ModelBinder。

我从属性ControllerContext.HttpContext获得的HttpContext中获得形式值。

但还有另一种方法可以获得这种上下文,即ControllerContext.RequestContext.HttpContext

这些方法有什么主要区别吗?它们中的任何一个在某些情况下会失败吗?

ASP.NET MVC获取表单值的两种不同方法

以下是RequestContext:的源代码

public RequestContext RequestContext
{
  get
  {
    if (this._requestContext == null)
      this._requestContext = new RequestContext(this.HttpContext ?? (HttpContextBase) new ControllerContext.EmptyHttpContext(), this.RouteData ?? new RouteData());
    return this._requestContext;
  }
  set
  {
    this._requestContext = value;
  }
}

因此,除非您在控制器上设置RequestContext(例如,在单元测试中可能发生的情况),否则RequestContext.HttpContext将与HttpContext属性本身相同。

您不太可能遇到这两个值不同的情况。