2

我有一个 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
        });

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

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

所以问题是:如何调整我的代码以传递calEventid参数?

4

3 回答 3

6

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
    });
于 2013-02-20T14:08:04.910 回答
2

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

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

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

于 2013-02-20T13:52:26.167 回答
0

简单地说,它应该作为

$(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
    });
于 2013-02-20T18:17:20.110 回答