使用参数打开jQuery对话框

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

$(document).ready(function () { $dialog = $('
') .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提供了一种为您存储数据的方法,无需使用虚拟属性或查找问题的解决方法。

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

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

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

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

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

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

简单地说,它应该工作

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