Analytics

2012年5月15日 星期二

[ASP.NET]MasterPage裡加入iFrame連結網頁,並由連結網頁與MasterPage連動(MasterPage was added iFrame links page by page with links MasterPage linked)


問題
當MasterPage裡有設到ajax Timer的元件時,會發現整個頁面發生postback,因此為了減緩此現象,可以在MasterPage加入iFrame,讓另一個網頁取代Timer的動作,因此MasterPage就不會有Postback的現象




解決方法
以下範例示範動態server時間與從另一頁面促發masterpage事件

Site.aspx(放入以下區塊)
  1. <div class="main">
  2.  
  3. <asp:Label Text="時間表" runat="server"></asp:Label>
  4.  
  5. <iframe  NAME="bottom" FRAMEBORDER="0"  width="100%" style="height: 50px" src="../WebForm1.aspx"></iframe>
  6.  
  7. <asp:Label ID="Label1" Text="觸發主頁面" runat="server"></asp:Label>
  8.  
  9. <iframe  NAME="bottom" FRAMEBORDER="0"  width="100%" style="height: 50px" src="../WebForm2.aspx"></iframe>
  10.  
  11. <div style="visibility:hidden">
  12.  
  13. <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />
  14.  
  15. </div>
  16.  
  17. </div>
  18.  
Site.Master.cs
  1. using System;
  2.  
  3. using System.Collections.Generic;
  4.  
  5. using System.Linq;
  6.  
  7. using System.Web;
  8.  
  9. using System.Web.UI;
  10.  
  11. using System.Web.UI.WebControls;
  12.  
  13.  
  14.  
  15. namespace FramesetDemo
  16.  
  17. {
  18.  
  19.     public partial class SiteMaster : System.Web.UI.MasterPage
  20.  
  21.     {
  22.  
  23.         protected void Page_Load(object sender, EventArgs e)
  24.  
  25.         {
  26.  
  27.  
  28.  
  29.         }
  30.  
  31.  
  32.  
  33.         protected void Button1_Click(object sender, EventArgs e)
  34.  
  35.         {
  36.  
  37.             this.Label1.Text = "您按下按鈕時間" + DateTime.Now.ToString();
  38.  
  39.         }
  40.  
  41.     }
  42.  
  43. }
  44.  
WebForm1.aspx
  1. <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="FramesetDemo.WebForm1" %>
  2.  
  3.  
  4.  
  5. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  6.  
  7.  
  8.  
  9. <html xmlns="http://www.w3.org/1999/xhtml">
  10.  
  11. <head runat="server">
  12.  
  13.     <title></title>
  14.  
  15. </head>
  16.  
  17. <body>
  18.  
  19.     <form id="form1" runat="server">
  20.  
  21.     <asp:ScriptManager ID="ScriptManager1" runat="server">
  22.  
  23.     </asp:ScriptManager>
  24.  
  25.     <div>
  26.  
  27.         <asp:UpdatePanel ID="UpdatePanel1" runat="server">
  28.  
  29.             <ContentTemplate>
  30.  
  31.                 <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
  32.  
  33.                 <asp:Timer ID="Timer1" runat="server" Interval="1000" ontick="Timer1_Tick">
  34.  
  35.                 </asp:Timer>
  36.  
  37.             </ContentTemplate>
  38.  
  39.         </asp:UpdatePanel>
  40.  
  41.     </div>
  42.  
  43.     </form>
  44.  
  45. </body>
  46.  
  47. </html>
  48.  
WebForm1.cs
  1. using System;
  2.  
  3. using System.Collections.Generic;
  4.  
  5. using System.Linq;
  6.  
  7. using System.Web;
  8.  
  9. using System.Web.UI;
  10.  
  11. using System.Web.UI.WebControls;
  12.  
  13.  
  14.  
  15. namespace FramesetDemo
  16.  
  17. {
  18.  
  19.     public partial class WebForm1 : System.Web.UI.Page
  20.  
  21.     {
  22.  
  23.         protected void Page_Load(object sender, EventArgs e)
  24.  
  25.         {
  26.  
  27.  
  28.  
  29.         }
  30.  
  31.  
  32.  
  33.         protected void Timer1_Tick(object sender, EventArgs e)
  34.  
  35.         {
  36.  
  37.             this.Label1.Text = DateTime.Now.ToString("yyyy/MM/dd hh:mm:ss");
  38.  
  39.         }
  40.  
  41.     }
  42.  
  43. }
  44.  
WebForm2.aspx
  1. <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm2.aspx.cs" Inherits="FramesetDemo.WebForm2" %>
  2.  
  3.  
  4.  
  5. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  6.  
  7.  
  8.  
  9. <html xmlns="http://www.w3.org/1999/xhtml">
  10.  
  11. <head runat="server">
  12.  
  13.     <title></title>
  14.  
  15. </head>
  16.  
  17. <body>
  18.  
  19.     <form id="form1" runat="server">
  20.  
  21.     <div>
  22.  
  23.             <input type="button" onclick="javascript:window.parent.document.getElementById('Button1').click();" name="Button1" value="Button" id="Button1" /></div>
  24.  
  25.     </div>
  26.  
  27.     </form>
  28.  
  29. </body>
  30.  
  31. </html>
  32.  
參考: http://forums.asp.net/t/1162285.aspx

沒有留言:

熱門文章