强制 UpdatePanel 从母版页重新加载

Force UpdatePanel to reload from master page

我的母版页和它的 SelectedIndexChanged 事件中有一个下拉菜单,我希望它重新加载内容页的数据。我将内容页的内容包裹在 UpdatePanel 中,这样我就可以在我的母版页后面的代码中执行此操作:

Protected Sub ddlMyDropdown_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ddlMyDropdown.SelectedIndexChanged
    Session("NewVal") = ddlMyDropdown.SelectedValue
    upMyUpdatePanel.Update()
End Sub

然后在内容页面中,我使用下拉菜单设置的值并将其显示到屏幕上:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    lblMyLabel.Text = Session("NewVal")
End Sub

问题是当 upMyUpdatePanel 更新时,它落后了一步,这意味着它反映了此事件之前的一个 SelectedIndexChanged 事件的 ddlMyDropdown 的值。我相信这是因为内容页的 Page_Load 事件在母版页的 SelectedIndexChanged 事件之前触发。

当从母版页的下拉列表中选择新值时,如何更新内容页的内容?

另一种方法是在内容页面上执行所有操作。

您在内容页面上只需要 (C#):

// find the ddl on the master page.
DropDownList ddl = (DropDownList)Page.Master.FindControl("DropDownList1");
// set the label's text.
Label1.Text = ddl.SelectedValue;

您不必设置会话数据。

如果我不需要 SelectedIndexChanged 事件在 代码在我的内容页面运行之前 触发,@wazz 的回答会解决我的问题。

我通过将我的内容页面的 Page_Load 代码移动到 Page_PreRender 中解决了我的问题,以便它在母版页的 SelectedIndexChanged 之后触发。可能不理想,但效果很好。

Protected Sub Page_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreRender
    'Do stuff...
End Sub