从ASP.Net网站转换为Web应用程序项目后的MasterType问题

5
在将 Asp.net 网站转换为 Web 应用程序后,我在使用 MasterType 指令的页面上收到“类型 MyNameSpace.MyMaster 未定义”的错误。
例如,在 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相同。 我相信这与转换过程有关,因为新的Web应用程序项目没有此问题。 你有什么想法吗? 更新: 问题已解决! 在转换过程中,我添加了一个与根命名空间同名的命名空间到一个类中。 只需删除它即可解决问题。

1
你可能想要从头开始重新创建主控页/代码后台,然后复制标记和代码。这并没有回答你的问题,但应该解决你的问题。 - o.k.w
我通过搜索“namespace Namespace”找到了我的命名空间问题。 - Dave Mateer
3个回答

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


这并没有改变任何事情 - 现在只是多了一个命名空间,问题仍然存在。 - Geoff Appleford

1

问题已解决!

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


-1

更改

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

<%@ MasterType TypeName="Mastername" %>

这将完美地运行


这段代码可以编译,但在运行时会出错。无法加载类型“Mastername”。请移除与根命名空间匹配的代码中设置的任何命名空间,设计师生成的代码将正常工作。 - James Barry

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接