【问题标题】:From action to action to _Layout从行动到行动再到 _Layout
【发布时间】:2012-11-22 01:06:57
【问题描述】:

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

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

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

我已尝试向 ViewBag 添加内容,但无法持久。 我有一个 ViewModel 基类,但不知道是否/如何从编辑操作中设置索引的 ViewModel。

如果消息从不同的地方传递以在 _Layout 中使用,我该如何实现这一点?

【问题讨论】:

  • 重定向到索引,使用"return RedirectToAction("Index");"但是您希望消息如何显示?它会在重定向之前还是之后弹出?您可以使用会话跨控制器/操作传递消息。此外,您应该限制会话,您可以使用字典收集消息或信息,然后将其保存到会话中。
  • 我希望消息在重定向后显示。也就是说,与 Index View 一起,但消息来自 Edit 操作。
  • 你可以将它保存在一个会话中,从索引操作中,检查会话是否不为空,此时你可以在 ViewBag 中设置消息。
  • 我还应该补充一点,重定向不是问题,我可以通过在重定向时向 URL 添加参数来实现它,但我宁愿不这样做。
  • @GiantHornet,你是​​什么意思?在执行 Index 操作时,如何从 Edit 操作中获取要使用的内容?我尝试在编辑中使用 ViewBag,但重定向后它不存在。

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


【解决方案1】:

您可以使用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(控制器扩展等)的完整通知系统,但这是最简单的方法。

【讨论】:

    猜你喜欢
    • 2014-05-29
    • 1970-01-01
    • 2016-03-01
    • 1970-01-01
    • 2019-09-23
    • 1970-01-01
    • 2015-01-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多