[英]Bypass ASP.NET master page rendering after Response.Redirect(url, false)
[英]ASP.NET: rendering content after master is already rendered
我在內容頁面上有一個按鈕,該按鈕用於修改母版頁上文本框的值。 設置很簡單。
內容頁面 - 代碼隱藏 - 按鈕點擊處理程序:
protected void but_mybutton_Click(object sender, EventArgs e)
{
string new_value = "!!";
Master.textbox_value(new_value);
}
問題是當它到達 function 時,主頁面已經呈現。 要顯示新值,我需要重新刷新頁面。 無論如何,是否有明確告訴頁面重新渲染,因為我已經更改了它的控件上的一些值,而不必重新刷新頁面?
您需要查看ASP.NET 頁面生命周期,以更好地了解事件是如何觸發的。
您最好的選擇是嘗試在頁面OnInit 或 LoadViewstate事件上設置值。
母版頁的呈現確實就像它是頁面上的控件。 這篇博文向您展示了整個頁面生命周期,包括母版頁的事件。
http://weblogs.asp.net/ricardoperes/archive/2009/03/08/asp-net-page-events-lifecycle.aspx
根據您提供的代碼,這應該作為按鈕的 OnClick 處理程序在母版頁的 OnPreRender 之前執行。 你能告訴我們什么的代碼嗎
Master.textbox_value(new_value);
做?
我只是用最簡單的設置測試了這個。 在母版 1 label 和設置 label 的文本的方法。
public partial class SiteMaster : System.Web.UI.MasterPage
{
protected void Page_Load(object sender, EventArgs e) {}
public void SetLabelText(string text) {
this.Label1.Text = text;
}
}
在內容頁面上有一個按鈕。 按鈕的 onclick 處理程序調用母版頁上的方法。
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e) {}
protected void Button1_Click(object sender, EventArgs e)
{
((SiteMaster)this.Master).SetLabelText("foo");
}
}
這會將 label 的文本設置在與預期相同的回發中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.