【问题标题】:MasterType problem after converting from ASP.Net WebSite to Web Application project从 ASP.Net 网站转换为 Web 应用程序项目后的 MasterType 问题
【发布时间】:2010-11-20 13:28:38
【问题描述】:

将 Asp.net 网站转换为 Web 应用程序后,我在使用 MasterType 指令的页面上收到“Type MyNameSpace.MyMaster is not defined”错误。

例如 在aspx文件中

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

在 Designer.vb 文件中生成了以下代码,并出现上述错误:

Public Shadows ReadOnly Property Master() As MyNameSpace.MyMaster
    Get
        Return CType(MyBase.Master, MyNameSpace.MyMaster)
    End Get
End Property

如果我删除命名空间,错误就会消失,但每次我对 aspx 页面进行更改时都会重新生成此代码。

如果我在指令中使用没有命名空间的 TypeName(例如 Typename="MyMaster")而不是 VirtualPath,则生成的代码没有命名空间引用,因此不会出错。但是,这会在运行时失败。包含命名空间的行为与使用 VirtualPath 的方式相同。

我很确定这与转换过程有关,因为新的 Web 应用程序项目没有这个问题。

有什么想法吗?

更新:

问题解决了!

在转换过程中,我向一个类添加了一个与我的根命名空间同名的命名空间。只需将其删除即可解决问题。

【问题讨论】:

  • 您可能希望从头开始重新创建母版页/代码隐藏。然后复制标记和代码。这不能回答您的问题,但应该可以解决您的问题。
  • 我通过搜索发现了我的命名空间问题:命名空间命名空间

标签: asp.net vb.net web-applications web master-pages


【解决方案1】:

您可以命名您的母版页类。命名空间是默认在 Web 应用项目中创建的。

namespace TestNS
{
    public partial class TestMP : System.Web.UI.MasterPage
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }
    }
}

阅读本文以了解任何其他问题:

http://msdn.microsoft.com/en-us/library/aa730880(VS.80).aspx

【讨论】:

  • 这并没有改变任何东西——同样的问题发生了,只是现在有了额外的命名空间。
【解决方案2】:

问题解决了!

在转换过程中,我向一个类添加了一个与我的根命名空间同名的命名空间。只需将其删除即可解决问题。

【讨论】:

    【解决方案3】:

    改变

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

    <%@ MasterType TypeName="Mastername" %>
    

    这将完美地工作

    【讨论】:

      猜你喜欢
      • 2010-10-03
      • 1970-01-01
      • 1970-01-01
      • 2014-04-25
      • 1970-01-01
      • 2017-02-21
      • 1970-01-01
      • 1970-01-01
      • 2010-09-25
      相关资源
      最近更新 更多