【发布时间】:2009-09-03 19:12:44
【问题描述】:
我正在使用 .Net Framework 2.0 和 VS 2008 Team System 在 ASP.net 中工作
我有一个母版页和 n 个内容页。在母版页上我放了一个 ScriptManager 标记,在内容页上我有一个 UpdatePanel。但是,每当从内容页面触发按钮点击等事件时,整个页面都会被后退。我该如何解决?
【问题讨论】:
我正在使用 .Net Framework 2.0 和 VS 2008 Team System 在 ASP.net 中工作
我有一个母版页和 n 个内容页。在母版页上我放了一个 ScriptManager 标记,在内容页上我有一个 UpdatePanel。但是,每当从内容页面触发按钮点击等事件时,整个页面都会被后退。我该如何解决?
【问题讨论】:
您可以通过GetCurrent()方法访问页面的ScriptManager对象。
此代码从内容页面访问母版页中的 ScriptManager(添加按钮控件 btnSubmit 作为异步控件):
protected void Page_Load(object sender, EventArgs e)
{
ScriptManager _scriptMan = ScriptManager.GetCurrent(this);
_scriptMan.RegisterAsyncPostBackControl(this.btnSubmit);
}
但是,我只需将 ScriptManager 从 MasterPage 移动到每个内容页面,因为这样您就不必这样做了。
【讨论】:
这取决于您如何设置更新面板。
要看的关键是:
UpdateMode 属性ChildrenAsTriggers 属性例如,如果您只想在一个按钮上更新面板,请按 go for:
UpdateMode=ConditionalChildrenAsTriggers=False或者,如果您希望面板中的所有控件触发部分回发,则只需设置 ChildrenAsTriggers=True 并且不要使用 Triggers 集合。
This MSDN article 更详细地描述了上述属性。
【讨论】: