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

Muk*_*mar 17 asp.net-mvc

我正在研究MVC3项目,我想在视图中使用RedirectToAction时显示一条消息.我使用过ViewBag,但它不起作用.

请有人帮助我.

小智 38

您可以使用TempData来显示消息

在你的视图中

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

成功后在你的控制器中

TempData["Success"] = "Added Successfully!";
return RedirectToAction("actionname", "controllername");
Run Code Online (Sandbox Code Playgroud)


Chr*_*t A 10

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);
Run Code Online (Sandbox Code Playgroud)

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

@Html.RenderFlashMessages()
Run Code Online (Sandbox Code Playgroud)