【问题标题】:Invalid namespace in Razor viewRazor 视图中的命名空间无效
【发布时间】:2020-02-18 16:13:06
【问题描述】:

我一切正常。但后来我决定将一种类型的DateTimeRange 移动到单独的项目中(DLL 在同一个解决方案中)。我还将命名空间从 XYZ.ABC 更改为 XYZ.DEF。

它在 Visual Studio 中运行良好,但在我在 IIS 上发布站点后,它会引发异常。

System.Web.HttpCompileException (0x80004005)
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\...\App_Web__viewName.cshtml.a05ae3fa.cybothwk.0.cs(31):
error CS0234: The type or namespace name 'DateTimeRange' does not exist in the namespace 'XYZ.ABC' (are you missing an assembly reference?)

它说在命名空间XYZ.ABC 中找不到DateTimeRange。但我已经更新了视图以使用更新命名空间中的模型。

我试图清除 ASP.NET 临时文件,但没有帮助。 我引用了 copy local 设置为 true 的第二个项目。

【问题讨论】:

    标签: iis razor visual-studio-2015 asp.net-mvc-5


    【解决方案1】:

    1)您需要检查的第一件事是 ASP.NET MVC 项目中的类库引用是否将“复制本地”属性设置为 true。

    2) 在 Views 文件夹下的 web.config 文件(不是根文件夹 web.config 文件)的标签内手动添加无法找到的命名空间:

    <namespaces>
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Optimization"/>
        ...
      </namespaces>
    

    3) 尝试将命名空间直接添加到导致问题的视图本身。在视图开头添加@using 指令:

    @using MyCustomClass;
    

    4)需要检查类项目的属性:

    • 在 Visual Studio 中打开项目。
    • 右键单击项目名称,然后单击属性。
    • 在“应用程序”选项卡下,“输出类型”已选择“类库”

    【讨论】:

    • 我尝试了你所说的一切(在互联网上找到了相同的答案),但没有奏效。无论如何我做了解决方法 - 将视图名称更改为不同的更新控制器,现在就足够了......
    • 这是一种解决方法,问题会回到我身边。我还在想,等找到正确的解决办法再补充。
    猜你喜欢
    • 2011-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-08
    • 1970-01-01
    • 2018-12-19
    • 2011-03-15
    相关资源
    最近更新 更多