我有一个像这样设置的控制器:
public class GenesisController : Controller
{
private string master;
public string Master { get { return master; } }
public GenesisController()
{
bool mobile = this.HttpContext.Request.Browser.IsMobileDevice; // this line errors
if (mobile)
master="mobile";
else
master="site";
}
}
我的所有其他控制器都继承自这个GenesisController。每当我运行应用程序时,我都会收到此错误
Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.
如何从控制器初始化访问HttpContext?
答案 0 :(得分:15)
因为HttpContext在控制器构造函数中不可用。您可以覆盖可以访问它的Initialize方法,如下所示:
protected override void Initialize(RequestContext requestContext)
{
base.Initialize(requestContext);
bool mobile = this.HttpContext.Request.Browser.IsMobileDevice; // this line errors
if (mobile)
master="mobile";
else
master="site";
}
另外我敢打赌,你试图用这个主变量和布尔值做的事情可能会在far more elegant way中解决,而不是让你的控制器担心这样的事情。