我有一个剃刀页面,其命名空间为MyApp.Pages.MyClass
。在此页面的cshtml中,我试图引用类库中具有诸如MyClass.Enums.MyEnum
之类的命名空间的枚举。我找不到引用此枚举类型的方法,因为使用完全限定的名称空间(或尝试添加using子句)都会导致“类型或名称空间不存在”错误,因为它将MyClass.Enums.MyEnum
视为相对于当前名称空间MyApp.Pages.MyClass
的相对位置。有没有一种方法可以引用枚举类型而不重命名所涉及的命名空间?
答案 0 :(得分:0)
我有一个剃刀页面,其命名空间为
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*@
答案 1 :(得分:0)
只需取消引用全局名称空间即可:
using MyEnum = global::MyClass.Enums.MyEnum