簡體   English   中英

從iframe的代碼隱藏訪問父控件

[英]Access parent control from iframe's codebehind

所以我對非mvc web開發很新,我遇到了iFrames的問題。

在我的主頁面中,我有一個復選框,通過jQuery顯示和隱藏iframe。 在我的iFrame的代碼隱藏中,我有一個方法loadStuff() ,如果iFrame可見,我只想運行它。 也就是說,我不想只是將它粘貼在page_load因為如果我這樣做,它會在每次主頁刷新時嘗試運行。

所以我想我只是檢查是否檢查了主窗口中的復選框,如果是,請運行loadStuff()方法。

問題是,我無法弄清楚如何從iFrame的代碼隱藏中訪問該復選框。 看起來像this.Parent.FindControls()一些變體可以工作,但我沒有任何運氣。

這是我的一點點:

主頁面(我們稱之為mainpage.aspx):

<input type="checkbox" id="showIFrame" onclick="if(this.Clicked) $('#iframe').show(); else $('#iframe').hide();" />

//...

<div id="iframe" style="display:none;">
<iframe runat="server" id="iframeNetSheet" .../></iframe>
</div>

因此,當單擊該復選框時,會顯示iFrame。 那是我想要調用加載函數的時候。 截至目前,它位於iFrame的page_load中,每次加載父頁面時都會被命中。

誰能讓我指出正確的方向?

如果您在頁面上有IFrame並且該頁面已刷新,則iFrame也將刷新(每次)。 所以我沒有看到任何理由檢查父頁面復選框值。
此外,不僅僅設置iframe的可見性(如果設置為visible並且src url為空)設置src ,只有在選中復選框時才會加載框架(並loadStuff() )。
代碼看起來像這樣:

<input type="checkbox" id="showIFrame" onclick="SetFrame(this.checked);" />

function SetFrame(isChecked)
{
   if(isChecked) 
   {
      $('#iframe').show(); 
      var iframeNetSheet = $('#iframeNetSheet');

      if(iframeNetSheet.attr("src") == "")
         iframeNetSheet.attr("src", "SomeUrl"); //This will invoke page_load on iframe.
   }
   else 
      $('#iframe').hide();
}

在代碼中默認將幀的src url留空。 (只允許通過腳本設置)

我建議您將iFrame src設置為“about:blank”開始 - 然后當您單擊復選框時設置正確的源。 像這樣......

<script type="javascript">
  $(document).ready(function() {
    $("#showIFrame").click(function() {
      var frame = $("#iframeNetSheet");
      if ($("#showIFrame").prop("checked")) {
        frame.show();
        if (frame.prop("src") == "about:blank") {
          frame.attr("src", "newpage.aspx");
        }
      } else {
        frame.hide();
      }
    });
  });
</script>
<input type="checkbox" id="showIFrame" />
<iframe runat="server" id="iframeNetSheet" style="display:none;"/></iframe>

直播JSFiddle演示

(並且在完成所有這些之后,因為我對jQuery沒有100%的信心 - 我意識到它幾乎就是馬格努斯從一開始就說的)

編輯:正如Marcus親切地指出的那樣,沒有必要將src重置為“about:blank”,因此相應地更新了代碼(並且稍微提高了效率)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM