C# NET MVC获取表单值的两种不同方法
我正在创建自己的ModelBinder 我从属性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
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值。