ASP.NET - 不能使用MasterPage的GetType()

时间:2009-04-15 13:15:17

标签: asp.net master-pages gettype

我有一个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。

4 个答案:

答案 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文章。

http://msdn.microsoft.com/en-us/library/ms228274.aspx