主页面中的页面加载比page.page加载更晚访问

时间:2015-03-17 14:31:03

标签: c# asp.net controls master-pages page-lifecycle

我在母版页以及子页面中有一些标签。所有这些标签中的值来自单个数据库查询。我想运行此查询一次,以便填充主和子项中的标签。有办法吗?

这是我问题的最简化版本

以下是我在Master页面的page_load中初始化公共属性的方法(我使用 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>

我希望现在我的问题很明确。

2 个答案:

答案 0 :(得分:1)

不,您无法更改订单,但有一种方法可以在子页面中指定强类型模型,或者您可以在子页面中执行强制转换以引用母版页的任何公共属性。

答案 1 :(得分:0)

不,不能做到。但是在旁注中,你的问题并不清楚。据我所知,您面临一些性能问题。我建议您查看您的应用程序设计。应用捕获等实践。当我在使用asp.net应用程序时,以下链接有所帮助

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