2014-03-26 51 views
7

我試圖通過if-else條件在mvc控制器中顯示警告框。但警報框不顯示。我的錯誤在哪裏?如何在mvc 4控制器中顯示警報消息?

控制器

public ActionResult Index() 
{ 
    int userId = Convert.ToInt32(Session["userId"].ToString()); 

    if (WebMatrix.WebData.WebSecurity.IsAuthenticated) 
    { 
     if (userId == 90043) 
     { 
      return View(); 
     } 
     else 
     { 
      TempData["Message"] = "You are not authorized."; 
      return RedirectToAction("Index", "Home"); 
     } 
    } 
    else 
    { 
     return RedirectToAction("Index", "Home"); 
    } 
} 
+2

你是什麼意思的「警報消息」?請注意,控制器內部的代碼在服務器上執行,無需(直接)用戶監督。它不代表用戶看到並與之交互的最終結果(網頁)。此外,由於這不是WinForms項目,所以不能顯示消息框。這個不成立。如果你確實想顯示一個JavaScript'alert',那麼就從'Index'view中進行。 –

+0

嗨安德烈我想在RedirectToAction之前顯示警報,如果userId不等於90043 – user3107343

+0

@ user3107343你不能 – Grundy

回答

7

您不能顯示從控制器警報。從客戶端到服務器有單向通信方式。因此,服務器不能告訴客戶端做任何事情。客戶端請求和服務器給出響應。

因此,當響應返回以顯示某種消息框時,您需要使用javascript。

OR

使用上調用該控制器操作

<script> 
$(document).ready(function(){ 
    $("#submitButton").on("click",function() 
    { 
    alert('Your Message'); 
    }); 

}); 
<script> 
2

不可能從控制器顯示警報按鈕的jquery。因爲mvc視圖和控制器完全相互分離。您只能在視圖中顯示信息。因此,需要通過使用ViewBag,ViewData或TempData將要顯示的信息從控制器傳遞到視圖。如果您嘗試顯示存儲在TempData [「消息」中的內容,則可以在視圖頁面中添加少量javascript行。

<script> 
    alert(@TempData["Message"]); 
<script> 
26

添加下面的代碼在你的控制器

TempData["msg"] = "<script>alert('Change succesfully');</script>"; 

添加下面的代碼在你的.cshtml(圖)文件

@Html.Raw(TempData["msg"]) 
+3

我已經閱讀了20篇關於如何做到這一點的文章 - 所有這些文章都是一半寫的,沒有解釋(完全或完全),沒有經過測試或者只是完整的三部曲。這兩條線解決方案 - 完美。第一次工作,不需要解釋。好答案!!! – Bertie

+1

_感謝伯蒂。 _ – vicky

+0

不錯的@vicky!這是我遇到的最好的非標記解決方案之一! – callisto

14

使用此:

return JavaScript(alert("Hello this is an alert")); 

或:

return Content("<script language='javascript' type='text/javascript'>alert('Thanks for Feedback!');</script>"); 
相關問題