关于MVC中TempData持久化问题

最近在做mvc跨控制器传值的时候发现一个问题,就是有时候TempData的值为null,然后查阅了许多资料,发现了解决的办法。

因为TempData生命周期确实很短,所以需要持久化一下:

        public ActionResult Index()
        {
            TempData["message"] = "123asd";
            return view();
        }

        public ActionResult GetTemData()
        {
            var foredid = TempData["message"].ToString();
            var  result=_content.userinfo(foredid);return View();
        }

在当前Action方法中调用Keep方法则保证在当前请求中TempData对象中所存储的键都不会被移除。

总结:

1.当利用TempData对象存储值而未调用TempData.Keep方法时,此时只要该对象被已读,然后该对象中的所有项将被标记为删除状态。

2.若调用TempData.Keep(string key)方法,此时不会进行标记。

3.RedirectToRouteResult和RedirectResult总是会调用TempData.Keep()方法,保证该对象中的所有项不会被移除。

猜你喜欢

转载自www.cnblogs.com/wuyabaibsd/p/9390571.html