c# - 存在临时数据未清除的问题

标签 c# javascript jquery asp.net-mvc tempdata

在我的应用程序中,我创建了一个基本 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/

相关文章:

java - 如何在 Jquery 中获取/触发复选框在页面加载后执行自身

C# 的默认关键字在 C++ 中是否等效?

javascript - polymer 不使用 polymer 服务加载 ts web 组件

javascript - <label> 标签内的 <a> 标签不触发复选框

javascript - 使用 jquery 动态创建模态

jquery - 页脚在调整大小时丢失列背景颜色

c# - 如果在使用 pdfbox.net 时使用 process.start 运行,IKVM 找不到提供程序

c# - 如何编写调用方法的事件

c# - List<T>.ForEach 与自定义 IEnumerable<T> 扩展

javascript - unique 在 mongoose 中做什么