我有一个HttpPost
方法添加到数据库
public ActionResult SubmitData(MyViewModel model)
{
if (ModelState.IsValid)
{
var result = submitData(command);
if (response.success)
{
return RedirectToAction("MyHttpGetMethod");
}
}
return View("MyHttpGetMethod", model);
}
public ActionResult MyHttpGetMethod(int Id)
{
MyModel model = GetData(Id);
return View(model);
}
调用HttpPost
并成功更改数据库后,我重定向到
更改后获取当前数据的HttpGet
操作。我喜欢显示成功消息
在视图上。我不能使用ViewBag,因为Redirect并且我不能使用TempData,因为这里不推荐使用。
答案 0 :(得分:0)
TempData是此特定用例的有效解决方案。但是,如果您不喜欢这样做,则可以传递查询字符串值,以指示从HttpPost操作到GET操作的事务状态。
因此,请更新您的GET操作以获得另一个参数
public ActionResult MyHttpGetMethod(int Id,string m="")
{
MyModel model = GetData(Id);
if(!String.IsNullOrEmpty(m) && m=="s")
{
// do some code to show the success message here.
ViewBag.Msg="Saved Successfully";
}
return View(model);
}
并在您的视图中,使用ViewBag项目显示消息(使用您想要的任何样式)
<p>@ViewBag.Msg</p>
并在您的HttpPost操作中,
return RedirectToAction("MyHttpGetMethod", new { id =model.Id, m="s"} );