MVC:显示来自Controller的Modal对话框

时间:2014-11-24 18:19:40

标签: asp.net-mvc-4

可以在Controller中显示模态对话框。

例如:

[HttpPost]
        public ActionResult Index(int contractType )
        {
            if (contractType == 0 )
            {
                return "SHOW MODALDIALOG BOX" with button "YES" and "NO" when click "YES" Refirect to nexe page, click "NO" stay in current page
            }
            else
            {
                return View();
            }
        }

感谢答案

2 个答案:

答案 0 :(得分:4)

从控制器(服务器),您无法显示弹出窗口。 您可以做的是返回视图...带有一些标志,让VIEW显示一个javascript模式对话框。

其他选项是返回JSON而不是视图...并使用JS创建模式对话框。 然后......在clic YES上,您可以使用不同的参数调用相同的Controller操作(在您的情况下,使用不同的' 0'),这次显示视图。

示例:

[HttpPost]
    public ActionResult Registering( )
    {

        string RetResult =  new UserPermission().ValidateUser( Request["username"].ToString(), Request["password"].ToString() );

        if (!string.IsNullOrEmpty(RetResult)){
            ViewBag.MyErrorMessage = RetResult;
            return View(); //This will show the view named "Registering", but you can display any other.
//The ideal is display the same one where the user entered the user/pass.
        }
        else {
            return RedirectToAction("Index", "EvalMain"); 
        }
    }

在您的视图中

@if(ViewBag.MyErrorMessage != null){
     //Display the error message
     //You can: display it in a div (without popup), you can show a javascript Alert(), or display a modal dialog.    
}

要将其显示为DIV,只需执行以下操作:

<div>@ViewBag.MyErrorMessage </div>

显示提醒():

<script> alert(@ViewBag.MyErrorMessage);</script>

要显示模态对话框,您可以使用jQueryUI:http://jqueryui.com/dialog/ 或多或少这样的事情:

<div id="dialog" title="Error Registering">
<p>@ViewBag.MyErrorMessage</p>
</div>

<script>
    $(function() {
    $("#dialog").dialog();
    });
</script>

答案 1 :(得分:0)

感谢您的回答。这个想法非常简单。我正在运行eMemberShip WCF服务,它接受ussername和密码并返回用户角色和权限。 如果用户名或密码不正确,服务返回错误字符串,而不是我希望显示带有此错误字符串的ModalDialog,如果没有,则重定向其他页面。

[HttpPost]
    public ActionResult Registering( )
    {

        string RetResult =  new UserPermission().ValidateUser( Request["username"].ToString(), Request["password"].ToString() );



        if (!string.IsNullOrEmpty(RetResult))
            return this.ModalDialog(RetResult);

        else
            return RedirectToAction("Index", "EvalMain"); 
    }