如何从 App_Code 引用 ASP.net MasterPage
我正在开发一个 .net 3.5 网站,标准网站项目。
我在站点 App_Code 文件夹 (MyPage) 中编写了一个自定义页面类。
我还有一个带有属性的母版页。
public partial class MyMaster : System.Web.UI.MasterPage
{
...
private string pageID = "";
public string PageID
{
get { return pageID; }
set { pageID = value; }
}
}
我正在尝试从 MyPage 中的属性引用此属性。
public class MyPage : System.Web.UI.Page
{
...
public string PageID
{
set
{
((MyMaster)Master).PageID = value;
}
get
{
return ((MyMaster)Master).PageID;
}
}
}
我最终得到“找不到类型或命名空间名称‘MyMaster’。我通过使用 FindControl() 而不是 MyMaster 页面上的属性来使其工作,但母版页中的 ID 可能会更改。
I'm working on a .net 3.5 site, standard website project.
I've written a custom page class in the sites App_Code folder (MyPage).
I also have a master page with a property.
public partial class MyMaster : System.Web.UI.MasterPage
{
...
private string pageID = "";
public string PageID
{
get { return pageID; }
set { pageID = value; }
}
}
I'm trying to reference this property from a property in MyPage.
public class MyPage : System.Web.UI.Page
{
...
public string PageID
{
set
{
((MyMaster)Master).PageID = value;
}
get
{
return ((MyMaster)Master).PageID;
}
}
}
I end up with "The type or namespace name 'MyMaster' could not be found. I've got it working by using FindControl() instead of a property on the MyMaster page, but IDs in the master page could change.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我倾向于对网站项目执行以下操作:
在 App_Code 中创建以下内容:
BaseMaster.cs
BasePage.cs:
然后我的母版页从 BaseMaster 继承:
并且我的页面继承自 BasePage:
I've tended to do the following with Web Site projects:
In App_Code create the the following:
BaseMaster.cs
BasePage.cs:
My Master pages then inherit from BaseMaster:
And my pages inherit from BasePage:
我找到了一些背景,它的发生是因为事物的构建和引用方式。
App_Code 中的所有内容都会编译为程序集。
其余的,aspx 文件,代码隐藏,母版页等,编译成引用 App_Code 的另一个程序集。
因此就有了单向街。
以及为什么本的解决方案有效。 谢谢本。
现在我都清楚了。
I found some background to this, it happens because of the way things are built and referenced.
Everything in App_Code compiles into an assembly.
The rest, aspx files, code behind, masterpages etc, compile into another assemlby that references the App_Code one.
Hence the one way street.
And also why Ben's solution works. Thanks Ben.
Tis all clear to me now.
我意识到已经有公认的解决方案,但我只是偶然发现了这个线程。
最简单的解决方案是 Microsoft 网站上列出的解决方案
(http://msdn.microsoft.com/en-us/library/c8y19k6h。 ASPX )
基本上它说,如果您在子页面 aspx 中包含额外的指令,您的代码将按原样工作:
<%@ MasterType VirtualPath="~/MyMaster.Master" %>
然后您可以通过以下方式直接引用基础 MyPage 中的属性:
I realise there are already accepted solutions for this, but I just stumbled across this thread.
The simplest solution is the one listed in the Microsoft website
(http://msdn.microsoft.com/en-us/library/c8y19k6h.ASPX )
Basically it says, your code will work as-is, if you include an extra directive in the child page aspx:
<%@ MasterType VirtualPath="~/MyMaster.Master" %>
Then you can directly reference the property in the base MyPage by: