C# NET MVC获取表单值的两种不同方法

C# NET MVC获取表单值的两种不同方法,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,我正在创建自己的ModelBinder 我从属性ControllerContext.HttpContext获取表单值 但是,还有另一种方法可以获取此上下文,即ControllerContext.RequestContext.HttpContext 这些方法有什么主要区别吗?在某些情况下,它们中的任何一个会失败吗?以下是RequestContext的源代码: public RequestContext RequestContext { get { if (this._request

我正在创建自己的ModelBinder

我从属性
ControllerContext.HttpContext
获取表单值

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


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

以下是
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
属性本身相同


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

是的,但是RequestContext.HttpContext永远不会为null,而HttpContext可能为null。@greenshade:不,HttpContext属性getter具有类似的null检查,因此它总是返回非null值。