2017-04-12 86 views
0

在我的应用程序中,如果有人没有成功登录我想收回并返回类似JavaScript警报的东西来通知他们。问题是我无法使用Ajax调用来返回此JavaScript警报。有没有其他的方式来返回某种排序或警报或消息?从没有Ajax的控制器返回asp.net MVC中的警报/消息?

+0

为什么你需要提醒?你是否没有使用正常的表单提交和验证帮助器方法来显示错误消息? – Shyju

+0

我没有使用表单,因为我在这个页面上设置了多个不同按钮的页面设置方式都使用相同的ID文本框来运行,所以表单不起作用。 – RainMan

+0

如果你没有表格,这是怎么回事“有人没有成功登录”? – Shyju

回答

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); 
} 

请注意,这个机制,该消息将在接下来的页面上显示的用户负载,这绝不能necessarely是触发错误(例如,如果他有多个浏览器窗口打开)的页面。

+0

谢谢!这工作完美 – RainMan

+0

很高兴我可以帮你:) –