2014-03-26 52 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>"); 
相关问题