无法访问母版页

时间:2017-05-25 16:32:45

标签: c# asp.net .net-4.0 master-pages

我正在尝试从子页面访问母版页中的转发器,并继续为Master返回null。在母版页和子页面上尝试了不同的东西,没有任何工作,我看不出我做错了什么。

在母版页上,我有:

<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site.Master.cs" Inherits="EA.SiteMaster" %>

在母版页的某处:

<asp:Repeater runat="server" ID="rptFavorites" OnItemDataBound="rptFavorites_ItemDataBound">
    <ItemTemplate>
        <li>
            <span class="glyphicon glyphicon-heart">
                <asp:LinkButton runat="server" ID="lbFavLink" />
            </span> 
        </li>
    </ItemTemplate>
</asp:Repeater>

然后在default.aspx中:

<%@ MasterType TypeName="EA.SiteMaster" virtualpath="../Site.master" %>

在default.aspx.cs中:

private void UpdateMaster()
{
    Repeater rptFavorites;
    rptFavorites = (Repeater)this.Master.FindControl("rptFavorites");

    if (rptFavorites != null)
    {
        DataTable dtFavorites = Favorites.GetFavoritesByUserID(Session["UserID"].ToString());
        rptFavorites.DataSource = dtFavorites;
        rptFavorites.DataBind();
    }
}

this.Master始终为null。我尝试将MaterPageFile保存为default.aspx中的MasterType:

<%@ Page Title="Home Page" Language="C#" MasterPageFile="../Site.Master" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="EA._Default" %>
<%@ MasterType TypeName="EA.SiteMaster" virtualpath="../Site.master" %>

更新

我在default.aspx.cs中有一个web方法,由aspx文件中的js函数调用。 Web方法是静态的,所以我不能只调用UpdateMaster()并且必须先创建一个实例,所以我做了以下(见下面的代码)。这就是为什么当它到达UpdateMaster()时,它正在使用一个似乎没有母版页的新页面实例。另一方面,如果我不这样做,我不知道如何从web方法调用该函数。

[System.Web.Services.WebMethod]
public static string AddUserFavorite(string sURL, string sFriendlyName)
{
    string sMsg = string.Empty;
    string sUserID = HttpContext.Current.Session["UserID"].ToString();
    bool bExists = Favorites.FavoriteExists(sUserID, sURL);

    if (bExists)
        sMsg = "This link is already in your favorites list";
    else
    {
        Favorites oFavorite = new Favorites();
        oFavorite.FavoritesURL = sURL;
        oFavorite.FavoritesFriendlyName = sFriendlyName;
        oFavorite.UserID = sUserID;

        int iRet = Favorites.AddFavrites(oFavorite);

        if (-1 == iRet)
            sMsg = "Failed to add to favorites list";
        else
        {
            sMsg = "\"" + sFriendlyName + "\" (" + sURL + ") was added to your favorites list";
            _Default _Def = new _Default();
            _Def.UpdateMaster();
        }
    }
}
        return sMsg;
    }

0 个答案:

没有答案