我在我的类中声明了一个静态变量,我希望它在使用后被清除。它是 int 类型。
另外,当视图被卸载时,是否有任何控制器函数被调用?也许我可以在那里清除变量。
如果需要更多信息,请告诉我。
更新:
我正在将一个值从我的视图传递给控制器。现在,当我的控制器具有此值时,我希望它能够持续。我正在使用静态。
现在证明它很方便。我欢迎提出更好的解决方案的建议。但请务必为我提供当前问题的解决方案:)
我在我的类中声明了一个静态变量,我希望它在使用后被清除。它是 int 类型。
另外,当视图被卸载时,是否有任何控制器函数被调用?也许我可以在那里清除变量。
如果需要更多信息,请告诉我。
更新:
我正在将一个值从我的视图传递给控制器。现在,当我的控制器具有此值时,我希望它能够持续。我正在使用静态。
现在证明它很方便。我欢迎提出更好的解决方案的建议。但请务必为我提供当前问题的解决方案:)
如果要清除静态变量 - 为其分配新值。
如果您想在控制器操作之前/之后执行某些操作,请使用操作过滤器。自定义操作过滤器允许您覆盖以下方法(并在那里执行您的逻辑):
OnActionExecuting
– 在执行控制器操作之前调用。OnActionExecuted
– 在执行控制器操作后调用。OnResultExecuting
– 在执行控制器操作结果之前调用。OnResultExecuted
– 在执行控制器操作结果后调用。我强烈建议您不要在 Web 应用程序的上下文中使用静态变量。请记住,许多请求可以由不同的线程同时处理,从而导致真正“难以发现”的错误。
改为使用静态ThreadLocal<T>
。
您还可以将静态变量包装在会话中以维护每个会话的不同值,就像这样。
public static Int32 MyInt
{
get
{
return (Int32)HttpContext.Current.Session["MyInt"];
}
set
{
HttpContext.Current.Session["MyInt"] = value;
}
}
如果这就是您要清除该值的原因,您将不再需要清除它。