为什么我没有收到此代码的输出,如果我添加 @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"); }
代码是否首先得到评估然后输出,但即便如此也没有意义。没有 TempData["errors"] = new String[] { "You need to be logged in to access this page." };
我得到它的输出没有什么是非常烦人的。
尝试仅针对当前请求执行FLASH消息。
更新:
@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>
}
查看:
Pat_ID
4
6
8
9
11
35
45
67
...
答案 0 :(得分:3)
会话状态意味着在请求,浏览器选项卡之间保持持久性,甚至在浏览器窗口关闭后也是如此。
您可能正在寻找的是TempData,其设计目的完全符合您的意愿。
TempData的值会持续直到读取或直到会话为止 超时以这种方式保持TempData可以启用诸如的方案 重定向,因为TempData中的值超出了a 单一请求。
这对于消息和警报非常有效,因为您可以重定向到另一个页面(比如无效的访问原因),并且仍然保留此消息,直到加载下一页。