2008-12-17 76 views
0

什麼是從代碼中調用父頁面的代碼隱藏的方法的子頁面背後的最好方式在ASP.NET 2.0網站模型中?調用從子頁面的代碼背後方法父頁面後面的代碼 - ASP.NET 2.0頁繼承模式

場景:用戶單擊父頁面中的鏈接以查看子頁面中的數據記錄的詳細信息(父級和子級是兩個分開的頁面)。用戶將修改客戶端頁面中的數據。一旦子頁面處理完更新,子頁面將關閉,我需要重新綁定父頁面以反映更新。

我沒有類似的東西,但它是從調用用戶控件被列入父頁面父頁面

if(Page.GetType().ToString().Contains("ASP.Default_aspx")) 
{ 
    MethodInfo MyMethod = this.Parent.TemplateControl.GetType().GetMethod("MyMethod"); 
    MyMethod.Invoke(this.Page, null); 
    MyMethod = null; 
} 

更新:我不得不從後面的代碼,因爲孩子做到這一點頁面在數據更新後關閉。

+0

我能夠通過執行以下操作[解決方案](HTTP來實現:/ /stackoverflow.com/questions/376404/load-an-aspnet-20-aspx-page-using-systemreflection#376646) – 2008-12-18 01:44:52

回答

1

最簡單的方法是做使​​用多視點或一些這樣的事情在一個頁面上,整個事情。

其他則是,用JavaScript可以調用

document.opener.location.href = "url"; 

改變父頁面上的URL。你可以保持它不變,或者把東西粘在查詢字符串中,並且用Page_Load上的這些值弄糊塗。

0

如果打開模態彈出窗口中的子頁面,則可以在父頁面上訪問window.returnValue(通過JavaScript),然後調用頁面刷新或Ajaxy rebind調用。

檢查this page出來如何從模式彈出基於父頁面上的返回值的值,做一些事情。

但是,如果可以選擇,我會在一個單獨的頁面打開編輯表單脫身。我將編輯表單放在用戶控件中,並將其顯示/隱藏爲la lightbox風格。

0

不確定這是否正是你想要的,但你可以使用跨頁面發佈這一點。這使您可以從子頁面回發到父頁面,並有權訪問子頁面的ViewState。爲此,請將按鈕的PostBackUrl屬性設置爲子頁面。在父頁面中,您可以訪問PreviousPage屬性以從子頁面檢索值。所以在子頁有一個按鈕,如:

<asp:Button ID="Button1" runat="server" Text="Update data" 
     PostBackUrl="~/Parent.aspx" onclick="Button1_Click" /> 

然後在Parent.aspx Page_Load事件:

protected void Page_Load(object sender, EventArgs e) { 

    if (IsCrossPagePostBack) { 

     Page prevPage = this.PreviousPage; 
     string myVal = prevPage.FindControl("myTextBox1").ToString(); 
     string myVal2 = prevPage.FindControl("myTextBox2").ToString(); 
     //etc 

    } 
} 
相關問題