在JQuery UI对话框中加载aspx页面

时间:2011-01-07 20:20:53

标签: asp.net jquery

我有一个aspx页面,其中有一个linkbutton,点击该链接按钮后,我调用另一个aspx页面在弹出窗口中传递一个参数,如下所示:

<asp:linkbutton id='lbtn1' onClick=<%#"window.open('/testsite/mypage.aspx?param=abcd');return false"%> 

直到现在它工作正常但现在我必须将我的页面包含到另一个网站,他们使用JQuery进行弹出对话框,并要求我使用相同的方式加载我的页面。

我是JQuery的新手并且不知道。我试着通过这个论坛搜索谷歌但没有运气。

有人可以帮助我并告诉我如何实现这一点(请不要介意,但我会非常感谢代码示例)。

非常感谢。

3 个答案:

答案 0 :(得分:7)

您的意思是通过iframe将页面加载到模式/灯箱样式中吗?尝试使用lightbox plugin或阅读jQuery UI dialog

如果您决定使用jQuery UI对话框,则可以执行以下操作:

<div id="dialog">
<iframe src="page.html"></iframe>
</div>
...
$( "#dialog" ).dialog();

答案 1 :(得分:6)

还有另一种方法,但是出于模态弹出的目的,iframe似乎是一个完全合法的解决方案。但是您可以使用ajax查询加载目标页面的所有html,并使用它填充模式对话框。使用jQuery:

    <script type="text/javascript">
    function showPanel(panelID) 
    {
         $panel = $('#'+panelID);
         $.ajax({
                url: "/testsite/mypage.aspx",
                type: "GET",
                dataType: "html",
                async: false,
                data: { "param": "abcd"
                },
                success: function (obj) {
                    // obj will contain the complete contents of the page requested
                    // use jquery to extract just the html inside the body tag
                    $content=$(obj).find('body').html();
                    // then update the dialog contents with this and show it
                    $panel.html($content);
                    $panel.dialog();
                }
         });
    }
    </script>
<div id="dialog">
</div>

然后使用面板ID来点击您的点击事件。

<asp:LinkButton id="lbtn1" onClick="showPanel('dialog');return false;" />

注意:虽然这可能会有效,但如果你想在客户端上做一些链接,那么LinkButton就没有意义,因为根据定义它是一个回发控件。因此,如果您希望将其呈现为超出样式的超链接,请使用HyperLink控件或仅使用HTML链接。如果没有,只需在链接文本或内容周围放置“div”或“span”,并使用jQuery向其添加单击事件。在SO上有很多关于此类事情的讨论。

答案 2 :(得分:0)

我可以考虑提供一个动态aspx页面,其中部分或全部构建页面的唯一方法是在弹出窗口中添加一个iframe,并将其目标设置为您要加载的URL。

讨厌iframe,但我认为这可能是唯一的方式。