MVC4 应用程序中的 Jquery UI 对话框从部分 View 加载对话框内容

标签 jquery jquery-ui asp.net-mvc-4

这个问题实际上是在寻求有关如何继续扩展这个简单示例的指导,并看看我是否以正确的方式解决问题。

这是我第一次使用 Jquery UI。我在单击事件上调用下面的 jquery UI 对话框(工作正常)。该对话框将包含许多元素(复选框等),单击这些元素时将对首先调用该对话框的元素执行操作。 (showdialog(this) 中的“this”)

1) 您将看到我正在为对话框元素建立单击事件,该事件在dialog() 的打开事件中被调用。会有很多这样的东西,所以我想知道这是否是执行此操作的正确位置。

2)对话框可能会变得复杂,所以我不想使用 .html() 加载内容,我想使用部分 View (或类似的 View )。我尝试添加 $(this).load( '@Url.Action("controllername")') 到启动操作。内容加载正常,但点击事件丢失。因此,我将dialogevents()移至部分 View ,但它仍然不起作用,而且当我单击复选框时,Chrome实际上似乎崩溃了。

之前经历过此操作的任何人都可以给我任何建议吗:a)将内容加载到对话框中的首选方法,以及b)管理对话框内元素的单击事件的最佳方法。

或者...我不应该为此使用 .dialog() 吗? :)

谢谢。

   <script>
        $(function (e) {            
                $(".Text").on("click", function (e) {
                    showdialog(this);
                });
            }

            function showdialog(obj) {
                var customdialog = $('<div id="customdialog"></div>')                
                .html('<h2>Hello World</h2><br>Color: <input class="thischeckbox" type="checkbox" name="color" value="checked"> <input class="thatcheckbox" type="checkbox" name="columns" value="checked">')
                .dialog({
                    modal: false,
                    dialogClass: "contentpopup",
                    title: "Here's My Modal",
                    height: 500,
                    width: 300,
                    open: function (event, ui) {
                        //$(this).load('@Url.Action("LoadDialog")');
                        dialogevents();
                    }
                });

                function dialogevents() {
                    $(".thischeckbox").on("click", function () {
                        alert("this clicked!");

                    $(".thatcheckbox").on("click", function () {
                        alert("that clicked!");
                    });
                }
            };
        });
    </script>

这是我尝试加载部分 View 时使用的...

Controller :

public ActionResult LoadDialog()
{
    return PartialView("LoadDialog");
}

加载对话框.cshtml:

@{
    Layout = null;
}


<div>
        <h2>Hello World</h2><br>Color: <input class="mycheckbox" type="checkbox" name="color" value="checked"> <input class="columncheckbox" type="checkbox" name="columns" value="checked">
</div>

<script>
    $(function dialogevents(obj) {
      //same as above
    });
</script>

最佳答案

为什么你不只是简单地将 View 放入 div 中并对其执行 .dialog()...?!

在您的第一个 View 中:

<div id="divDialog" style="display:none">
    @Html.Partial("MyPartialView")
</div>

每当您需要对话框时:

$("#divDialog").dialog({
    // dialog options...
});

您还可以将任何内容动态呈现到对话框中:

$("#divDialog").html(jqXHR.responseText); // or any hard coded content

关于MVC4 应用程序中的 Jquery UI 对话框从部分 View 加载对话框内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18433646/

相关文章:

angularjs - 在 ASP.NET MVC 中使用带有 TextBoxFor 的 Angular 属性

javascript - Jquery .show 不更改显示属性

javascript - 如何为新添加的节点创建一个新的ID?

javascript - Angular 形 Material 没有 Angular 形 Material 的切屑效果

javascript - jquery书架 slider 修改

c# - CustomAttribute反射(reflect)html属性MVC5

c# - 使用 C# 对 (My)SQL 结果进行排序的想法

jQuery:获取包含选择器的 HTML?

用于不同日期格式的 Jquery 表排序器

Jquery UI 可排序,按钮不能用作句柄