Mar*_*ijn 16 c# asp.net-mvc session exists
当我执行以下操作时出现错误:
if(Session["value"] != null)
{
// code
}
Run Code Online (Sandbox Code Playgroud)
我得到的错误是这样的:
你调用的对象是空的.
为什么是这样?我总是这样检查我的会话?我正在使用MVC框架,这与它有关吗?
编辑:
代码位于Controller的构造函数中:
public class MyController : ControllerBase
{
private int mVar;
public MyController()
{
if (Session["value"] != null)
{
mVar= (int)Session["value"];
}
}
}
Run Code Online (Sandbox Code Playgroud)
Nic*_*ley 21
[]是一个索引器,它就像一个类的方法.
在这种情况下,Session为null,您无法对其执行索引.
做这个:
if(Session != null && Session["value"] != null)
{
// code
}
Run Code Online (Sandbox Code Playgroud)
Mar*_*ell 18
会话在处理动作时才真正存在- 我不希望它在控制器的构造函数中有效.例如,控制器可能(据我所知)在请求之间重用.
您需要在动作(方法)中执行此操作,或者(可能更恰当地)在动作过滤器或OnActionExecuting(etc)方法中执行此操作:
public abstract class ControllerBase : Controller
{
protected override void OnActionExecuting(
ActionExecutingContext filterContext)
{
// code involving this.Session // edited to simplify
base.OnActionExecuting(filterContext); // re-added in edit
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
46876 次 |
| 最近记录: |