C# ASP.NET:在已呈现母版之后呈现内容

C# ASP.NET:在已呈现母版之后呈现内容,c#,asp.net,visual-studio,C#,Asp.net,Visual Studio,我在一个内容页上有一个按钮,它可以修改母版页上文本框的值。设置非常简单 内容页-代码隐藏-按钮单击处理程序: protected void but_mybutton_Click(object sender, EventArgs e) { string new_value = "!!"; Master.textbox_value(new_value); } 问题是,当它到达该函数时,母版页已经呈现。要显示新值,我需要重新刷新页面。由于我更改了页面控件上的某些值,而不必重新刷新页面

我在一个内容页上有一个按钮,它可以修改母版页上文本框的值。设置非常简单

内容页-代码隐藏-按钮单击处理程序:

protected void but_mybutton_Click(object sender, EventArgs e)
{
    string new_value = "!!";
    Master.textbox_value(new_value);
}

问题是,当它到达该函数时,母版页已经呈现。要显示新值,我需要重新刷新页面。由于我更改了页面控件上的某些值,而不必重新刷新页面,因此是否需要显式地告诉页面重新呈现?

您需要查看以更好地了解事件是如何触发的


您最好尝试在事件页面上设置值。

您需要查看以更好地了解事件的触发方式


最好的办法是尝试设置页面事件的值。

母版页的呈现方式确实像页面上的控件一样。 这篇博客文章向您展示了整个页面生命周期,包括母版页的事件

根据您提供的代码,这应该在母版页的OnPreRender之前执行按钮的OnClick处理程序时起作用。你能告诉我们什么的密码吗

Master.textbox_value(new_value);
是吗

我刚刚用最简单的设置测试了这个。母版页上有1个标签和设置标签文本的方法

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");
    }
}

这将在与预期相同的回发中设置标签的文本。

母版页呈现时确实像是页面上的控件。 这篇博客文章向您展示了整个页面生命周期,包括母版页的事件

根据您提供的代码,这应该在母版页的OnPreRender之前执行按钮的OnClick处理程序时起作用。你能告诉我们什么的密码吗

Master.textbox_value(new_value);
是吗

我刚刚用最简单的设置测试了这个。母版页上有1个标签和设置标签文本的方法

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");
    }
}

这会将标签文本设置为与预期相同的回发方式。

回答得好。我要指出,母版页实际上是对页面的控制,而不是相反;)是的,我知道这是违反直觉的……正如我对代码的理解,必须在单击按钮时设置值。因此,不应在OnInit事件中设置它。我相信@nickvane的答案是正确的。整个页面在控件事件(如单击)后呈现。回答得好。我要指出,母版页实际上是对页面的控制,而不是相反;)是的,我知道这是违反直觉的……正如我对代码的理解,必须在单击按钮时设置值。因此,不应在OnInit事件中设置它。我相信@nickvane的答案是正确的。整个页面是在控件事件(如单击)之后呈现的。您完全正确,我用您的代码对其进行了测试,效果非常好。结果是,我的代码出现了一个逻辑错误,没有设置文本值。谢谢你的帮助。你完全正确,我用你的代码测试了它,效果非常好。结果是,我的代码出现了一个逻辑错误,没有设置文本值。谢谢你的帮助。