我有一个MasterPage,其类型如下:
alt text http://www.yart.com.au/stackoverflow/masterpage.png
没问题,这可行
现在,当我创建一个aspx页面并尝试相同的东西时,我得到null:
alt text http://www.yart.com.au/stackoverflow/page.png
为什么?
我怎样才能让它发挥作用?
注意
以下答案说我需要参考大会。 但是当我将这个应用程序作为ASP.NET网站运行时,我该怎么做呢 - 这里有编译的DLL。
答案 0 :(得分:4)
发生这种情况的原因是因为您正在单独编译每个页面,因为您使用的是网站而不是Web项目。
所以每个页面都是一个不了解另一个的单独程序集。如果您想使用GetType,我建议您更改为Web项目,以使您的生活更轻松。
答案 1 :(得分:2)
在您的aspx页面的标记中,您可以指定您正在使用的母版页类型:
<%@ MasterType VirtualPath="~/MasterPage.master" %>
在任何情况下,您都可以在代码隐藏中从这样的调用中获取当前母版页的类型:
protected void Page_Load(object sender, EventArgs e)
{
Type t;
t = this.Master.GetType();
}
答案 2 :(得分:1)
Type.GetType(string)
需要一个程序集限定的类型名称。
答案 3 :(得分:0)
添加史蒂夫建议,我一直使用他的方法, 另请查看有关MasterType指令的MSDN文章。