C# Razor页面命名空间与类库冲突
我有一个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页面
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,关于这个案例有什么更新吗?