正在删除视图中的会话变量
本文关键字:会话 变量 视图 删除 | 更新日期: 2023-09-27 18:21:53
如果在下面添加@{ Session.Remove("errors"); }
,为什么我没有从该代码中得到输出
@if (Session["errors"] != null)
{
<div class="alert alert-danger">
<ul>
@{
String[] errors = (String[])Session["errors"];
}
@foreach (String error in errors)
{
<li>@error</li>
}
</ul>
</div>
}
@if (Session["success"] != null)
{
<div class="alert alert-success">
@Session["success"]
</div>
}
代码是否先进行评估,然后输出,但即使这样也没有意义。如果没有@{ Session.Remove("errors"); }
,我什么都不用得到输出,这很烦人。
正在尝试执行仅为当前请求保留的FLASH消息。
更新:
TempData["errors"] = new String[] { "You need to be logged in to access this page." };
视图:
@if (TempData.ContainsKey("errors"))
{
<div class="alert alert-danger">
<ul>
@{
String[] errors = (String[])TempData["errors"];
}
@foreach (String error in errors)
{
<li>@error</li>
}
</ul>
</div>
}
@if (TempData.ContainsKey("success"))
{
<div class="alert alert-success">
@TempData["success"]
</div>
}
会话状态是指在请求、浏览器选项卡之间,甚至在浏览器窗口关闭后保持不变。
你可能正在寻找的是TempData,它的设计完全符合你的意愿。
TempData的值将持续,直到它被读取或直到会话超时。以这种方式持久化TempData可以实现以下场景重定向,因为TempData中的值在单个请求。
这对消息和警报非常有效,因为您可以重定向到另一个页面(比如无效访问原因),并且在加载下一个页面之前仍然保留此消息。