从行动到行动到_Layout

时间:2012-11-22 01:06:57

标签: c# asp.net-mvc c#-4.0 asp.net-mvc-4

我有一个布局页面,向用户显示简单的消息。

我有一个带有索引操作/视图的人员控制器,显示人员列表,我有一个人的编辑操作/视图。

当用户成功更新并保存某人的详细信息时,我想从“编辑”操作重定向到“索引”页面,但会显示“此人已成功更新”等消息。

我已尝试向ViewBag添加内容,但它不会持续存在。 我有一个ViewModel Base类,但不知道是否/如何从Edit操作设置Index的ViewModel。

如何在_Layout中使用的各个地方传递消息?

1 个答案:

答案 0 :(得分:2)

您可以使用TempData来完成此操作。存储在TempData中的值只会在一个Http请求中保留,因此非常适合存储这些类型的消息。

编辑POST操作

[HttpPost]
public ActionResult Edit(EditPersonModel model)
{
    // .. Your code to edit the person ..

    TempData["message"] = "The person has been updated.";
    return RedirectToAction("Index", "People");
}

您的观点

@if (TempData["message"] != null)
{
    <p>@TempData["message"]</p> // Displays the message
}

您可以构建一个使用TempData和ViewData(控制器扩展等)的整个通知系统,但这是最简单的方法。