在我的应用程序中,如果某人未成功登录,我想接收并返回类似JavaScript警报的内容以通知他们。问题是我不能使用Ajax调用来返回此JavaScript警报。有没有其他方法可以返回某种排序或警报或消息?
答案 0 :(得分:0)
您可以存储要在TempData中显示的消息(在错误情况下在控制器内部)。然后返回要显示的视图。
public const string FlashMessageTempDataKey = "_flash";
controller.TempData[FlashMessageTempDataKey] = "The Message (Grandmaster Flash and the Furious Five)";
然后检查视图中是否存在TempData。
public static MvcHtmlString Flash(this HtmlHelper helper) {
var message = helper.ViewContext.Controller.TempData[FlashMessageTempDataKey] as string;
var sb = new StringBuilder();
if (message != null) {
sb.AppendLine("<script>");
sb.AppendLine("$(function() {");
sb.AppendFormat("flash('{0}');", HttpUtility.JavaScriptStringEncode(message));
sb.AppendLine("});</script>");
}
return MvcHtmlString.Create(sb.ToString());
}
将此扩展方法用作@Html.Flash()
,例如在你的_layout.cshtml中。它假设页面上有一些全局JS函数flash(message)
和jQuery可以显示消息。
function flash(message) {
alert(message);
}
请注意,使用此机制时,邮件将显示在用户加载的下一页上,这不一定是触发错误的页面(例如,如果他打开了多个浏览器标签页)。