簡體   English   中英

ASP.NET:master已經渲染后渲染內容

[英]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.

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