如何在HttpPost提交数据库更改后添加成功消息

时间:2016-02-08 16:02:37

标签: asp.net-mvc

我有一个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,因为这里不推荐使用。

1 个答案:

答案 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"} );