C# Razor页面命名空间与类库冲突

C# Razor页面命名空间与类库冲突,c#,asp.net-core,namespaces,razor-pages,C#,Asp.net Core,Namespaces,Razor Pages,我有一个razor页面,其名称空间类似于MyApp.Pages.MyClass。在这个cshtml页面中,我试图引用类库中的枚举,其名称空间类似于MyClass.Enums.MyEnum。我找不到引用此枚举类型的方法,因为使用完全限定的命名空间(或尝试添加using子句)都会导致“类型或命名空间不存在”错误,因为它将MyClass.Enums.MyEnum视为相对于当前命名空间MyApp.Pages.MyClass。有没有一种方法可以引用枚举类型而不重命名所涉及的名称空间 我有一个razor页面

我有一个razor页面,其名称空间类似于
MyApp.Pages.MyClass
。在这个cshtml页面中,我试图引用类库中的枚举,其名称空间类似于
MyClass.Enums.MyEnum
。我找不到引用此枚举类型的方法,因为使用完全限定的命名空间(或尝试添加using子句)都会导致“类型或命名空间不存在”错误,因为它将
MyClass.Enums.MyEnum
视为相对于当前命名空间
MyApp.Pages.MyClass
。有没有一种方法可以引用枚举类型而不重命名所涉及的名称空间

我有一个razor页面,其名称空间类似于
MyApp.Pages.MyClass
。在这个cshtml页面中,我试图引用类库中的枚举,其名称空间类似于
MyClass.Enums.MyEnum

导致“类型或命名空间不存在”错误

如果我们将页面模型类命名为
MyClass
,而不是
MyClassModel
,则可以重现相同的问题

namespace MyApp
{

    public class MyClass : PageModel
MyClass.cshtml
页面中,错误如下

要修复它,可以重命名页面模型类,例如
MyClassModel

您还可以尝试另一种方法来创建和使用嵌套命名空间,如下所示

namespace MyApp
{
    namespace MyAppNestedNamespace
    {
        public class MyClass : PageModel
        {
            public void OnGet()
            {
                
                //...
            }

            //...
        }
    }

}
MyClass.cshtml页面可能如下所示:

@page
@model MyAppNestedNamespace.MyClass

@using MyClass.Enums

@{
    ViewData["Title"] = "MyClass";
}

<h1>MyClass</h1>

@*your code here*@
@page
@模型MyAppNestedNamespace.MyClass
@使用MyClass.enum
@{
ViewData[“Title”]=“MyClass”;
}
类名
@*你的代码在这里*@
我有一个razor页面,其名称空间类似于
MyApp.Pages.MyClass
。在这个cshtml页面中,我试图引用类库中的枚举,其名称空间类似于
MyClass.Enums.MyEnum

导致“类型或命名空间不存在”错误

如果我们将页面模型类命名为
MyClass
,而不是
MyClassModel
,则可以重现相同的问题

namespace MyApp
{

    public class MyClass : PageModel
MyClass.cshtml
页面中,错误如下

要修复它,可以重命名页面模型类,例如
MyClassModel

您还可以尝试另一种方法来创建和使用嵌套命名空间,如下所示

namespace MyApp
{
    namespace MyAppNestedNamespace
    {
        public class MyClass : PageModel
        {
            public void OnGet()
            {
                
                //...
            }

            //...
        }
    }

}
MyClass.cshtml页面可能如下所示:

@page
@model MyAppNestedNamespace.MyClass

@using MyClass.Enums

@{
    ViewData["Title"] = "MyClass";
}

<h1>MyClass</h1>

@*your code here*@
@page
@模型MyAppNestedNamespace.MyClass
@使用MyClass.enum
@{
ViewData[“Title”]=“MyClass”;
}
类名
@*你的代码在这里*@

只需取消对全局命名空间的引用:

    using MyEnum = global::MyClass.Enums.MyEnum

只需取消对全局命名空间的引用:

    using MyEnum = global::MyClass.Enums.MyEnum

您可以添加:
using MyEnum=MyClass.Enums.MyEnum
并在html中使用它,就像
MyEnum.Name
一样,这不起作用,因为using子句生成了相同的错误-它正试图将
MyClass.Enums.MyEnum
解析为相对于当前命名空间的,因为它以
MyClass
和当前命名空间开头以
MyClass
结尾。是的,我明白了,你可以添加整个路径?这些是整个路径。嗨@MarkGuerrieri,有关此案例的任何更新?您可以添加:
using MyEnum=MyClass.Enums.MyEnum
,并在html中使用它,如
MyEnum.Name
,这不起作用,因为using子句生成了相同的错误-它正试图解决相对于当前命名空间的
MyClass.Enums.MyEnum
,因为它以开头
MyClass
当前名称空间以
MyClass
结尾。是的,我明白了,你可以添加整个路径?这些是整个路径。嗨@MarkGuerrieri,关于这个案例有什么更新吗?