在jQuery UI对话框中打开部分视图的问题

时间:2011-05-10 16:59:49

标签: jquery asp.net-mvc jquery-ui asp.net-mvc-3 partial-views

我使用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 });这样的事情甚至可能吗?

3 个答案:

答案 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)

  

如何传递自定义选项/数据   随着对话的调用?

您可以使用jQuery Data将数据传递到对话框。

http://api.jquery.com/jQuery.data/

以下是有关如何使用的详细示例:

Passing data to a jQuery UI Dialog