如何从内容页面中访问母版页功能

时间:2015-03-11 17:38:13

标签: c# asp.net

我的母版页中有以下功能(尝试点击此链接:http://www.braintrove.com/id/17/page/3):

public void PopulateMessageSlider()
{
    strSql = @"";
    using (SqlConnection conn = new SqlConnection(str))
    {
        //function
    }
}

我正在尝试从我的内容页面访问该功能,如下所示:

Site stMaster;
stMaster = (Site)Page.Master.Master;
stMaster.PopulateMessageSlider();

我收到以下错误:

Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.
[NullReferenceException: Object reference not set to an instance of an object.]
MyProject.Pages.ContentPage1.Page_Load(Object sender, EventArgs e) +279
System.Web.UI.Control.LoadRecursive() +70
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3177

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

stMaster = (Site)Page.Master.Master;更改为stMaster = (Site)Master;。您没有嵌套的母版页,因此无需访问母版的母版。

此外,如果母版页类型不会在运行时更改,您可以在页面上设置MasterType。这样就无需进行演员表演,只需Master.PopulateMessageSlider();

答案 1 :(得分:1)

你可以这样轻松地做到这一点。

在您的内容页面中:

<%@ MasterType virtualpath="~/YourMasterPage.master" %>

在你的守则背后:

Master.PopulateMessageSlider();

更多信息here