如何在MVC中打开jquery对话框

时间:2011-03-17 21:12:42

标签: jquery

我有一个aspx页面和UserControl [它包含一个按钮,文本框] 和userControl被添加到aspx页面

所以当我点击aspx页面中的按钮时,它应该对Controller进行Jquery ajax调用以打开一个对话框。

我怎么能这样做....在这里我们必须调用控制器

2 个答案:

答案 0 :(得分:1)

这很简单 - 你创建一个部分视图,它将是实际的对话框内容(让我们称之为MyDialogPV) - 在控制器中创建一个返回PartialView(GetMyDialogPV)的方法 - 使用ajax调用PartialView并在运行时将其作为对话框呈现(在我使用JqueryUI插件的示例中)。

控制器代码:

public PartialViewResult GetMyDialogPV() { 
        //do some stuff, probably you'll need to set up a model given input parameters
        ViewBag.Text = "This is my dialog text, opened at " + DateTime.Now.ToLongTimeString();
        //retunr the partialview rendered
        return PartialView("MyDialogPV");
    }

对话框的部分视图:

<div>Title</div>
<div>
    @ViewBag.Text
</div>

父页面代码:

@{ViewBag.Title = "Home Page";}
<script>
$(document).ready(function () {
    $('#lod').click(function () { //click event of the link            
        //load the dialog via ajax
        $.ajax({
            url: '@(Url.Action("GetMyDialogPV"))',
            type: "GET",
            dataType: "html",
            cache: false,
            success: function (data) {
                $('#myDialogContainer').html(data); //write the dialog content into the diaog container
                $("#myDialogContainer").dialog({ //dialogize it with JqueryUI
                    autoOpen: false,
                    height: 400,
                    width: 450,
                    modal: true,
                    buttons: {
                        "Chiudi": function () { $(this).dialog("close"); }
                    },
                    close: function () { }
                });
                $("#myDialogContainer").dialog("open"); //open it!
            },
            error: function (xhr, ajaxOptions, thrownError) {
                alert('Error');
            }
        });
    });
});
</script>
<a id="lod">Load And Open Dialog</a>
<div id='myDialogContainer' style="background:red">this is the container for the html retrieved by the controller action GetMyDialogPV</div>

答案 1 :(得分:0)