Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc ASP.NET MVC:在控制器方法执行后清除TempData_Asp.net Mvc - Fatal编程技术网

Asp.net mvc ASP.NET MVC:在控制器方法执行后清除TempData

Asp.net mvc ASP.NET MVC:在控制器方法执行后清除TempData,asp.net-mvc,Asp.net Mvc,从我读到的内容来看,放入TempData的信息将用于当前请求和下一个请求(以便您可以通过重定向传递信息)。问题是,如果我浏览到一个不重定向的控制器操作,TempData中的信息仍然会在下一个请求中。我使用TempData来存储显示给用户的信息性消息,所以现在我也在第二个屏幕上获取第一个屏幕的消息 一旦不再使用TempData,控制器生命周期中是否有一个好时机来清除它?。您永远不需要手动清除TempData。如果您仅在重定向时使用它,它将在正确的时间自动为您清除。如果您不使用,我认为您应该使用Vi

从我读到的内容来看,放入TempData的信息将用于当前请求和下一个请求(以便您可以通过重定向传递信息)。问题是,如果我浏览到一个不重定向的控制器操作,TempData中的信息仍然会在下一个请求中。我使用TempData来存储显示给用户的信息性消息,所以现在我也在第二个屏幕上获取第一个屏幕的消息


一旦不再使用TempData,控制器生命周期中是否有一个好时机来清除它?

。您永远不需要手动清除TempData。如果您仅在重定向时使用它,它将在正确的时间自动为您清除。

如果您不使用,我认为您应该使用ViewData。但如果您确实需要上述行为,则应创建自己的自定义TempDataProvider:

public class YourTempDataProvider : SessionStateTempDataProvider
{
    public override void SaveTempData(ControllerContext controllerContext, IDictionary<string, object> values)
    {
        bool redirecting = ...

        if(redirecting)
        {
            base.SaveTempData(controllerContext, values);
        }
    }
}
公共类YourTempDataProvider:SessionStateTempDataProvider
{
公共覆盖无效SaveTempData(ControllerContext ControllerContext,IDictionary值)
{
bool重定向=。。。
如果(重定向)
{
base.SaveTempData(controllerContext,值);
}
}
}

除了定制的TempDataProvider之外,我不会在这里寻找特定的位置。但这很棘手。如果要在其他控制器中执行常规行为,该怎么办?我想现在就把它清理掉,在你需要清理的地方清理掉。当您注意到一个模式时,您可以将其拉到某个公共位置。

但如果我的控制器操作正在重定向,该怎么办?在这种情况下,我不能使用ViewData,因为消息不再存在。有没有比存储在TempData/ViewData中更好的方法来处理这样的显示消息?不重定向时需要使用ViewData,重定向时需要使用TempData。在这两种情况下,其他一切都是自动的。要显示,请写入TempData[“键”]??视图中的ViewData[“key”]以及如何使用此自定义类?