【问题标题】:Open jQuery dialog with a parameter打开带有参数的 jQuery 对话框
【发布时间】:2013-02-20 13:50:11
【问题描述】:

我有一个 MVC 视图,我想从中弹出一个 jQuery 对话框。在对话框中,我想渲染一个视图,但控制器操作需要一个参数。这是我所拥有的:

$(document).ready(function () {
            $dialog = $('<div></div>')
            .dialog({
            open: function(event, ui) {
                $(this).load("@Url.Action("Edit", "Agenda", new {id = ???})"); //Line to fix
            },
            autoOpen: false
        });

再往下,我有这段代码调用对话框。请注意,我要传递给控制器​​操作的idcalEvent.id

$('#calendar').fullCalendar({
    eventClick: function (calEvent, jsEvent, view) {
        $dialog.dialog('open');
    }
});

所以问题是:如何调整我的代码以将calEvent 传递给id 参数?

【问题讨论】:

    标签: jquery asp.net-mvc asp.net-mvc-3


    【解决方案1】:

    jQuery 提供了一种为您存储数据的方法,无需使用虚拟属性或为您的问题寻找解决方法。

    在 jquery 对话框对象上使用 .data() 方法在调用它时将您想要的任何数据绑定到对话框,并在 open() 函数中使用相同的方法将其读出:

    $('#calendar').fullCalendar({
    eventClick: function (calEvent, jsEvent, view) {
        $dialog.data('id', calEvent.id).dialog('open');
    }
    });
    

    $(document).ready(function () {
            $dialog = $('<div></div>')
            .dialog({
            open: function(event, ui) {
                url = "@Url.Action("Edit", "Agenda", new {id = "XXX"})";
                url.replace( "XXX", $(this).data('id') );
                $(this).load(url);
            },
            autoOpen: false
        });
    

    【讨论】:

    • 抱歉,我没有注意到您在服务器端呈现 Url。您必须替换预呈现 URL 中的一部分。我相应地编辑了代码。
    【解决方案2】:

    你的问题不是很清楚。如果您要传递给控制器​​的参数是 javascript 变量,您可以使用以下内容:

    open: function(event, ui) {
        var url = '@Url.Action("Edit", "Agenda")';
        $(this).load(url, { id: someJavascriptVariable });
    }
    

    查看.load() 方法的文档。第二个参数允许您为 AJAX 请求传递其他参数。

    【讨论】:

      【解决方案3】:

      简单地说, 它应该像

      $(document).ready(function () {
              $dialog = $('<div></div>')
              .dialog({
              open: function(event, ui) {
                  $(this).load("@Url.Action("Edit", "Agenda", new {id = '<%= calEvent.id %>'})"); //Line to fix
              },
              autoOpen: false
          });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-07-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-25
        • 1970-01-01
        相关资源
        最近更新 更多