【问题标题】:ASP.NET - cant GetType() of MasterPageASP.NET - 不能 GetType() 的 MasterPage
【发布时间】:2010-10-19 14:15:51
【问题描述】:

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

【问题讨论】:

    标签: asp.net master-pages gettype


    【解决方案1】:

    加上史蒂夫的建议,我一直使用他的方法, 另请查看有关 MasterType 指令的 MSDN 文章。

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

    【讨论】:

      【解决方案2】:

      在您的 aspx 页面的标记中,您可以指定您正在使用的母版页类型,如下所示:

      <%@ MasterType VirtualPath="~/MasterPage.master" %>
      

      无论如何,您都可以在代码隐藏中通过这样的调用来获取当前母版页的类型:

      protected void Page_Load(object sender, EventArgs e)
      {
          Type t;
          t = this.Master.GetType();
      }
      

      【讨论】:

      • 以上这可能有效,但在我的实际问题中,aspx 没有使用 MasterPage
      • 好的,最好解释一下为什么需要对母版页的引用,然后如果该页不使用它?可能还有另一种更简单的方法来实现您想要做的事情。
      【解决方案3】:

      发生这种情况的原因是因为您正在单独编译每个页面,因为您使用的是网站而不是 Web 项目。

      所以每个页面都是一个单独的程序集,彼此不知道。如果您想使用 GetType,我建议您更改为 Web 项目以使您的生活更轻松。

      【讨论】:

        【解决方案4】:

        Type.GetType(string) 需要一个程序集限定的类型名称。

        【讨论】:

        • 我这里没有明确的程序集,只是一个 ASP.NET 网站。我应该如何引用程序集?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多