我使用Loading a partial view in jquery.dialog作为参考,以便在对话框中打开一些部分视图。这对我有用了几次,但是现在我正在尝试使用相同的设置,它只是不起作用...
我有两个问题我想问一下......
对话框打开,然后一旦打开,页面就会被重定向到名为ActionMethod的ActionMethod,它将返回部分视图。所以我最终得到了一个显示正确信息的非样式页面。这是代码:
public ActionResult Compare()
{
var user = _helper.GetUserFromSession(HttpContext.User.Identity.Name);
var items = user.WatchList.ToList();
var viewModel = Mapper.Map<IList<Item>, List<IndexItem>>(items);
return PartialView(viewModel);
}
这是jQuery代码:
$('#compareItemsDialog').dialog({
autoOpen: false,
width: 850,
height: 600,
draggable: false,
dialogClass: "compareDialog",
title: 'Compare',
open: function (event, ui) {
$(this).load("/WatchList/Compare");
}
});
$('#watchListCompareLink').click(function () {
$('#compareItemsDialog').dialog('open');
});
我只是不明白为什么这会导致问题......我有其他部分视图设置完全相同,但它们工作正常!
更新:上述问题已得到解决。现在我只需要解答下面解释的问题......
如何将自定义选项/数据与调用对话框一起传递?我想也许我可以做一些像$('#compareItemsDialog').dialog('open', { id = someVar });
这样的事情甚至可能吗?
答案 0 :(得分:1)
问题:如何传递自定义选项/数据 随着对话的调用?
不是直接调用jQuery对话框,而是将此功能包装在您自己的自定义javascript函数中,该函数接受您的自定义数据。然后在那里有你的javascript分支逻辑。
答案 1 :(得分:0)
我没有在jQuery UI文档中看到您可以将open:
选项传递给对话框。那是来自旧版本的jQuery UI吗?
我经常将部分视图加载到对话框中,但我做的有点不同(相反,有点)。
我首先向服务器发送ajax请求以获取部分视图。然后成功替换对话框的HTML内容,然后最后打开它。
$.ajax({
url:"/action/param",
success:function(data){
$("#Dialog > some_inside_div").html(data);
$("#Dialog").dialog("open");
}
});
至于你的第二个问题。我不确定如何将自定义数据传递到对话框中。构建对话框时,选项变量会被扩展,但是您必须将自己的逻辑放入实际上对数据执行某些操作。您可以获得UI框架的未缩小的源代码并尝试自己扩展它。
答案 2 :(得分:0)