2017-04-12 29 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

很高興我可以幫你:) –