给出控制器动作,例如:
[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会破坏未来页面展示次数。我该如何解决这个问题?
答案 0 :(得分:1)
您可以使用TempData.Clear()
删除所有内容,或TempData.Remove(“YourKey”)
如果您确实需要某些内容,则可以选择使用。
E.g。
if (model.ReturnJson)
{
TempData.Clear();
return Json(model);
}
为了清楚起见,你可能需要两个不同的Action
s,因为你的第一个例子似乎实现了P-R-G而且在我看来你通过尝试添加一些内容来“混淆水”让一个Action
做两件事,因为没有太多的代码重用。