Masterpage 中的页面加载访问晚于 page.pageload

Page load in Masterpage is accessed later than page.pageload

我在 Masterpagechild pages 中有一些标签。所有这些标签中的值都来自 单个数据库查询 。我想 运行 这个查询一次,以便填充 Master 和 Child 中的标签。有办法吗?

这是我问题的最简化版本

下面是我如何初始化母版页 page_load 中的 public 属性(我使用 viewstate 以便其他方法也可以使用这些属性)

 protected void Page_Load(object sender, EventArgs e)
{
Meeting = bal.GetMeetingByID(MeetingID)[0];//DB QUERY

}

页面加载中的属性如下

 public Meeting1 Meeting
{
    set
    {
        ViewState["Meeting"] = value;
    }
    get
    {
        if (ViewState["Meeting"] != null)
            return (Meeting1)ViewState["Meeting"];
        else
            return null;
    }
} private int meetingID = -1;
public int MeetingID
{
    get
    {
        if (meetingID == -1)
            try
            {
                meetingID = int.Parse(Request.QueryString["meetingID"]);
            }
            catch (Exception)
            {
                Response.Redirect("~/Main.aspx");

            }
        return meetingID;
    }
}

现在在子页面中我有

protected void Page_Load(object sender, EventArgs e)
{        
    if (IsPostBack)
        return;       
    DataBindControls();
}
  private void DataBindControls()
{
    tbMeetingTitle.DataBind();            
}

Meeting.aspx页面是这样的

  <tr>
        <td>Meeting Title</td>
        <td colspan="3">
            <asp:TextBox ID="tbMeetingTitle" runat="server" Width="714px" Text='<%# GetData("MeetingTitle") %>' AutoPostBack="true" ></asp:TextBox></td>

    </tr>

我希望现在我的问题已经清楚了。

不,您不能更改顺序,但有一种方法可以在您的子页面中指定强类型模型,或者您可以在您的子页面中进行强制转换以引用任何 public 属性母版页。

不,这是不可能的。但是,请注意,您的问题尚不清楚。据我了解,您面临一些性能问题。我建议检查您的应用程序设计。应用像捕捉这样的练习。以下 link 在我处理 asp.net 应用程序时提供了帮助

http://www.codeproject.com/Articles/23306/ASP-NET-Performance-and-Scalability-Secrets