2012-09-11 112 views
0

我試圖在頁面上單擊按鈕時更新iFrame的源代碼。然而,似乎沒有任何要發生的事情......UpdatePanel中的iFrame未更新

.ASPX:背後

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Always"> 
     <ContentTemplate> 
       <div class="accountInfo"> 
        <p class="submitButton"> 
         <asp:Button ID="ValidateButton" runat="server" Text="Validate" OnClick="SubmitSponsor" /> 
        </p> 
       </div> 
       <iframe runat="server" id="PayPalFrame" height="150px" width="100%" frameborder="0"></iframe> 
     </ContentTemplate> 
    </asp:UpdatePanel> 

代碼:

protected void SubmitSponsor(object sender, EventArgs e) 
    { 
     var driver = new Driver(); 
     var isvalid = driver.IsAppValid(URL.Text, APILINK, Connstring); 

     if (isvalid) 
     { 
      PayPalFrame.Attributes.Add("src", "http://www.google.com"); 
      URLInvalid.Visible = false; 
     } 
    } 

我也試過: PayPalFrame.Attributes["src"] = "http://www.google.com";,仍然一無所獲。

+0

如果你在'SubmitSponsor'裏面設置了一個斷點,它會被擊中嗎? –

+0

自從我使用更新面板以來已經有一段時間了,但是您不必指出哪些按鈕會觸發面板更新並重新呈現? –

+0

@DaveZych是的,它通過SubmitSponsor中的每個命令都很好。 – r584

回答

1

我已經測試你的代碼,它工作在一個樣本項目:

ASPX:

<form id="form1" runat="server"> 
<div> 
    <asp:ScriptManager runat="server" /> 
    <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Always"> 
     <ContentTemplate> 
      <div class="accountInfo"> 
       <p class="submitButton"> 
        <asp:Button ID="ValidateButton" runat="server" Text="Validate" OnClick="SubmitSponsor" /> 
       </p> 
      </div> 
      <iframe runat="server" id="PayPalFrame" height="150px" width="100%" frameborder="0"> 
      </iframe> 
     </ContentTemplate> 
    </asp:UpdatePanel> 
</div> 
</form> 

代碼隱藏:

public partial class UpdatePanelIFrameTester : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 

    protected void SubmitSponsor(object sender, EventArgs e) 
    { 
     bool isvalid = true; 
     if (isvalid) 
     { 
      PayPalFrame.Attributes.Add("src", "http://www.ironworks.com"); 
     } 
    } 
} 

我會檢查你的代碼,並確保沒有造成你的頁面刷新/執行完整的回發(我改變了URL,因爲谷歌不允許你在標準條件下在iframe中查看它)。

+0

該死的。我現在覺得有點愚蠢。這是因爲我使用Google進行測試。由於iFrame沒有顯示任何內容,當我查看頁面的源代碼時,沒有添加src標記,我認爲它不起作用。我將其更改爲不同的網址,並按預期工作。 *注意 - 即使按照預期工作,查看頁面源代碼仍然沒有在iFrame標籤上顯示更新的「src」屬性,但沒關係。謝謝! – r584

+0

不是問題,很高興你能工作。就像未來的筆記一樣,當你在瀏覽器上點擊「viewsource」時,你不會看到大多數與回發有關的更改。如果您想查看當前顯示的內容,請使用開發人員工具/螢火蟲。祝你好運! –

0

我相信你必須刪除的src屬性,然後重新添加它,爲此工作。不知道這是爲什麼,但我記得最後一次使用更新面板時這樣做。也許是因爲src屬性總是存在?

無論如何,這裏的一些示例代碼:how to change the src attribute in iframe

+0

但是,如果你看看我上面的代碼,那麼「src」屬性還不存在。所以,理論上去除它什麼都不做。 – r584

+0

單擊按鈕後,如果您在瀏覽器中查看頁面源,是否有src屬性設置? –

+0

@ r584無論如何,我會敦促你嘗試一下,看看它是否有效。如果沒有,我很抱歉浪費你的時間。 –