如何有时停止TempData持久化。

时间:2016-02-22 22:56:16

标签: c# asp.net-mvc

给出控制器动作,例如:

[HttpPost]
public ActionResult DoSomething(MyModel model)
{
       model.Process();
       return RedirectResult("/somepage");
}

我想改变它以便偶尔返回JSon,具体取决于条件:

[HttpPost]
public ActionResult DoSomething(MyModel model)
{
       model.Process();
       if (model.ReturnJson)
       {
             return Json(model);
       }

       return Redirect("/somepage");
}

但是,Process()设置的tempdata会破坏未来页面展示次数。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

您可以使用TempData.Clear()删除所有内容,或TempData.Remove(“YourKey”)如果您确实需要某些内容,则可以选择使用。

E.g。

   if (model.ReturnJson)
   {
         TempData.Clear();
         return Json(model);
   }

为了清楚起见,你可能需要两个不同的Action s,因为你的第一个例子似乎实现了P-R-G而且在我看来你通过尝试添加一些内容来“混淆水”让一个Action做两件事,因为没有太多的代码重用。