ASP.NET:主后呈现的内容已经呈现
我有是假设修改主网页上的文本框的值的内容网页上的按钮。设置很简单。ASP.NET:主后呈现的内容已经呈现
内容页 - 代码背后 - 按钮单击处理程序:
protected void but_mybutton_Click(object sender, EventArgs e)
{
string new_value = "!!";
Master.textbox_value(new_value);
}
的问题是,到时候就得到这个函数,大师的页面已经呈现。要获得显示的新值,我需要重新刷新页面。无论如何,明确告诉页面重新渲染,因为我已经改变了它的控件的一些值,而不必重新刷新页面?
母版页呈现确实像它的页面上的控制。 此博客文章向您显示整页生命周期,包括母版页的事件。
http://weblogs.asp.net/ricardoperes/archive/2009/03/08/asp-net-page-events-lifecycle.aspx
从你提供这应该工作作为按钮的onclick处理程序的代码获取母版的的OnPreRender之前执行。你能告诉我们什么代码
Master.textbox_value(new_value);
呢?
我只是用最简单的安装测试这一点。在masterpage 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处理程序调用masterpage上的方法。
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");
}
}
这将标签的文本设置为与预期相同的回发。
您需要检讨ASP.NET Page Life Cycle以获得更好的了解事件是如何烧制的。
最好的办法是尝试页OnInit or LoadViewstate事件的设定值。
很好的回答。我会指出,主页实际上是页面的控制,而不是其他方式;)是的,违反直觉,我知道... – 2011-05-25 20:25:15
据我了解的代码,该值必须设置,当按钮是点击。因此它不应该在OnInit事件中设置。我相信@ nickvane的回答是正确的。整个页面在控制事件发生后(例如点击)呈现。 – slfan 2011-05-25 21:36:17
你是对的,我用你的代码对它进行了测试,它工作得很好。事实证明,我与我的代码没有设置文本值的逻辑错误。谢谢您的帮助。 – Bill 2011-05-25 22:26:29