我正在创建自己的ModelBinder。
我从属性HttpContext
获得的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
属性本身相同。您不太可能遇到这两个值可能不同的情况。