2011-01-07 63 views
1

我有一個ASPX頁面,在這裏我有一個LinkBut​​ton,並在點擊該鏈接按鈕,我打電話傳遞參數的另一個aspx頁面彈出窗口,如下圖所示:載入aspx頁面對話框

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

直到現在它工作正常,但現在我必須將我的頁面包含到其他站點,他們已經使用JQuery彈出對話框,並要求我使用相同的方式加載我的頁面。

我對JQuery非常陌生,對此毫不知情。我試圖通過這個論壇和谷歌搜索,但沒有運氣。

有人可以幫助我,告訴我怎麼做到這一點(請不要介意,但代碼示例將非常感激)。

非常感謝。

回答

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從您的click事件中調用此函數。

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

注:雖然這可能會工作,如果你的意圖只是有一個鏈接做在客戶端上的東西,一個LinkButton並沒有真正意義,因爲它是通過定義一個回傳控制。因此,如果您希望將其作爲超鏈接進行渲染,請使用HyperLink控件或HTML鏈接。如果沒有,只需在鏈接文本或內容周圍放置一個「div」或「span」,然後使用jQuery爲它添加一個單擊事件。 SO上有很多關於這類事情的討論。

+0

嗨傑米,感謝您的建議,但應將此代碼放入函數中,並在linkbuttons Onclick事件中調用該函數。可能是一個愚蠢的問題,但有點困惑,抱歉。 – Rahul 2011-01-07 22:56:10

7

您是指通過iframe將頁面加載到模式/燈箱樣式中?嘗試使用lightbox plugin或閱讀jQuery UI dialog

如果你決定使用jQuery UI的對話框中,你可以做這樣的事情:

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

這就是我要做的。 – 2011-01-07 21:35:31

0

我能想到的服務動態的aspx頁面,該頁面是內置(部分或全部的唯一途徑)服務器端是將一個iframe添加到彈出窗口,並將其目標設置爲您希望加載的網址。

討厭iframe,但我認爲這可能是唯一的方法。

相關問題