【问题标题】:How do I use the C# Global namespace operator with a using directive in my View?如何在我的视图中使用带有 using 指令的 C# 全局命名空间运算符?
【发布时间】:2012-11-15 17:23:16
【问题描述】:

我在 asp.net mvc 中的视图有些问题。我的 using 指令的命名空间与视图的命名空间发生冲突,导致我的 Razor 生成的类出现编译错误。我对 @model 指令有同样的问题,但使用 global:: 别名修复了它。出于某种原因,对我的 @using 执行相同操作会导致“找不到类型或命名空间‘全局’...”错误。这是我现在拥有的:

@using SampleSpace.System.Items

@model global::SampleSpace.System.Items.Thing

我想用

@using global::SampleSpace.System.Items

@model global::SampleSpace.System.Items.Thing

但上述错误不断发生。在视图的 using 指令中使用 global 是否有任何技巧,或者是否有不允许的原因?

【问题讨论】:

    标签: c# asp.net-mvc asp.net-mvc-3 razor global-namespace


    【解决方案1】:

    事实证明,解决这个问题的最简单方法是调整文件属性下的自定义工具命名空间。您可以将其更改为您想要避免任何冲突的任何内容。

    【讨论】:

      【解决方案2】:

      我不确定这是否能准确回答您的问题,但您能否通过将您感兴趣的命名空间放入 Views 文件夹的 web.config 来解决问题?

       <system.web.webPages.razor>
          <pages pageBaseType="System.Web.Mvc.WebViewPage">
            <namespaces>
              <add namespace="System.Web.Mvc" />
              <!-- snip -->
              <add namespace="SampleSpace.System.Items" />
            </namespaces>
          </pages>
        </system.web.webPages.razor>
      

      这通常是一种很好的做法,您的视图需要“使用”命名空间 - 它可以让视图本身保持混乱 - 不过我还没有在您描述的冲突场景中对此进行测试。

      或者使用这种方法来避免冲突:

      @using items = SampleSpace.System.Items
      

      希望对您有所帮助。

      【讨论】:

      • 将它放在 web.config 中会有所帮助,因为在该页面上我可以使用 global::,但并不理想,因为我有大量视图并且我只想包含命名空间对于他们中的一些人。我仍然想知道为什么我不能在视图本身中使用 global。
      猜你喜欢
      • 1970-01-01
      • 2011-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-02
      • 2018-02-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多