在我的应用程序中,我创建了一个基本 Controller 。所有其他 Controller 均派生自 BaseController
public class BaseController : Controller
{
//
// GET: /Base/
public void Warning(string message)
{
TempData.Add(Alerts.WARNING, message);
}
public void Success(string message)
{
TempData.Add(Alerts.SUCCESS, message);
}
public void Information(string message)
{
TempData.Add(Alerts.INFORMATION, message);
}
public void Error(string message)
{
TempData.Add(Alerts.ERROR, message);
}
}
不,如果我从BaseController
派生任何其他 Controller ,就可以做到这一点
public ActionResult Test()
{
Success("This is a success Alert");
}
现在在 _alert 部分 View
中,我检查临时数据并使用 Toastr 对其进行咆哮。 .
_警报部分 View
@if (TempData.ContainsKey(Alerts.SUCCESS))
{
foreach (var value in TempData.Values)
{
<script>
toastr.success("@value.ToString()");
</script>
}
}
@if (TempData.ContainsKey(Alerts.ERROR))
{
foreach (var value in TempData.Values)
{
<script>
toastr.error("@value.ToString()");
</script>
}
}
@if (TempData.ContainsKey(Alerts.INFORMATION))
{
foreach (var value in TempData.Values)
{
<script>
toastr.warning("@value.ToString()");
</script>
}
}
@if (TempData.ContainsKey(Alerts.WARNING))
{
foreach (var value in TempData.Values)
{
<script>
toastr.warning("@value.ToString()");
</script>
}
}
此 _alert
部分 View 在我的 _layout
View 中呈现。这是应用程序的主要布局。
所有页面都使用该布局。
问题:
我面临的问题是,一旦我从 Controller 发送消息,例如:
Success("This is a success message");
我在浏览器中收到一条不错的消息。但每次我转到下一页时,我都会收到相同的消息,因为它仍然保留在我的 TempData
中。
我该如何解决这个问题?
我可能必须清除临时数据,但是在哪里?
我尝试从 View 中清除 TempData:
但这不允许我。我在浏览器上收到错误消息,说我只能执行分配、递增、递减和创建对象等操作,但不能执行 TempData.Clear();
。另外,在客户端执行清除 TempData 并不是一个好主意,不是吗?
最佳答案
这似乎已经成功了
@if (TempData.ContainsKey(Alerts.SUCCESS))
{
foreach (var value in TempData.Values)
{
<script>
toastr.success("@value.ToString()");
</script>
}
TempData.Remove(Alerts.SUCCESS);
}
但我仍然不知道像我一样从 View 中清除 TempData 是否是一个好主意。
建议?
关于c# - 存在临时数据未清除的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22194055/