使用RedirectToAction时如何在视图中显示成功消息

时间:2015-01-11 10:33:14

标签: asp.net-mvc

我正在研究MVC3项目,我想在视图中使用RedirectToAction时显示一条消息。 我使用过ViewBag,但它没有用。

请有人帮助我。

2 个答案:

答案 0 :(得分:37)

您可以使用TempData显示消息

在您的视图中

@if (TempData["Success"] != null)
{
 <p class="alert alert-success" id="successMessage">@TempData["Success"]</p>
}

成功后在你的控制器中

TempData["Success"] = "Added Successfully!";
return RedirectToAction("actionname", "controllername");

答案 1 :(得分:9)

TempData控制器属性可用于实现此类功能。它的缺点是它在后台使用会话存储。这意味着您将有额外的工作使其在Web场上运行,或者您需要首先打开会话。

如果您只需要传输短信,也可以使用Cookie。这样做需要您正确保护cookie以防止篡改。 MachineKey.Protect()可以帮助您做到这一点。

我遇到了您遇到的同样问题,并为其创建了一个名为 FlashMessage 的解决方案。也许这可以为你节省一些工作。它也可以在NuGet上找到。

使用 FlashMessage 非常简单。您只需在调用RedirectToAction()之前对消息进行排队,如下所示:

// User successfully logged in
FlashMessage.Confirmation("You have been logged in as: {0}", user.Name);
return RedirectToLocal(returnUrl);

在您的视图中,您包含以下语句以呈现任何以前排队的消息:

@Html.RenderFlashMessages()