我正在尝试让我的内容页面能够在母版页上访问ASP:Literal。
我的内容页面为:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="viewProduct.aspx.cs" Inherits="AlphaPackSite.viewProduct" Title="Hi there!" %>
<%@ MasterType TypeName="Main" %>
然后我的主页名为Main.master:
<asp:Literal runat="server" ID="lblBasket" />
但是当我尝试做的时候从内容页面开始:
Master.basket.Text = "test";
我明白了:
错误46类型或命名空间名称 找不到“主要”(是你吗? 缺少使用指令或 装配参考?)
错误发生在设计师页面上:
public new Main Master {
get {
return ((Main)(base.Master));
}
}
我的主页代码是:
namespace AlphaPack.MasterPages
{
public partial class Main : System.Web.UI.MasterPage
{
protected void Page_Load(object sender, EventArgs e)
{
this.IsLoggedIn = Request.IsAuthenticated;
}
public bool IsLoggedIn
{
get { return this.ViewState["isLoggedIn"] as bool? ?? false; }
set { this.ViewState["isLoggedIn"] = value; }
}
}
}
答案 0 :(得分:2)
设计师是否在您的AlphaPack.MasterPages
名称空间内?
MasterType
不完全合格,是不是?你也不必提供路径吗? (不熟悉,抱歉)。
如果您使用MasterPageFile
引用而不是MasterType
,这会如何响应?
答案 1 :(得分:0)
<%@ Page Language="C#" MasterPageFile="~MasterPages/Main.Master" AutoEventWireup="true" CodeBehind="viewProduct.aspx.cs" Inherits="AlphaPackSite.viewProduct" Title="Hi there!" %>
答案 2 :(得分:0)
<%@ Page MasterPageFile="~/MasterPages/Main.master" .. %>
<%@ MasterType VirtualPath="~/MasterPages/Main.master" .. %>
Okey,这就是我在自己的应用程序中的样子:
母版页(Site.master,在根目录中):
<%@ Master Language="C#" AutoEventWireup="True" CodeBehind="Site.master.cs" Inherits="Project.SiteMaster" %>
它是代码隐藏的:
namespace Project
{
public partial class SiteMaster : System.Web.UI.MasterPage { }
}
内容页面(Test.aspx,在根目录中):
<%@ Page Language="C#" AutoEventWireup="True" CodeBehind="Test.aspx.cs" Inherits="Project.Test" MasterPageFile="~/Site.master" Title="Test" %>
它是代码隐藏的:
namespace Project
{
public partial class Test : System.Web.UI.Page { }
}
这就是自动生成的代码的样子:
namespace Project {
public partial class SiteMaster {
/// <summary>
/// lblBasket control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Literal lblBasket;
}
}
所以创建一个属性但不共享控件本身,只有文本:
public string BasketText
{
get { return this.lblBasket.Text; }
set { this.lblBasket.Text = value; }
}