有没有办法在 razor (MVC3) 视图中执行“外部别名”?

问题描述 投票:0回答:2

有没有办法在剃刀(MVC3)视图中执行

extern alias

我有同一程序集的两个版本(即 1.0 和 2.0),其类型具有相同的名称和命名空间,我需要一种方法在 razor 视图中指定较新的版本。

我已经尝试过:

@extern

和:

@{ extern alias MyAlias; }

但是这些都不起作用。

c# razor alias extern
2个回答
0
投票

十多年过去了,但我确实找到了解决办法。 Razor 中仍然没有“true”

extern alias
,但 C# 10 确实引入了
global using
,它与命名空间别名一起可以用作解决方法。

从技术上讲,该语句可以放在任何地方,但应用程序的入口点是放置它的最自然的地方。因此,在

Program.cs
App.cs
或同等内容中,在文件顶部放置

extern alias MyAlias;
global using __MyAlias = MyAlias::My.Alias;

现在,所有 C# 文件(包括 Razor 自动生成的文件)都可以使用

__MyAlias
代替
MyAlias::My.Alias
。请注意,这实际上并没有使原始程序集别名
MyAlias::
成为全局的;如果有多个顶级命名空间,则必须对每个命名空间执行此操作。但它将解决在 Razor 中使用具有冲突命名空间名称的程序集的原始问题。


-1
投票

在项目“Views”目录下的“web.config”文件中。找到此部分。

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

您可以像这样添加自定义命名空间:

<add namespace="My.Custom" />

这会将命名空间添加到所有 Razor(.cshtml 或 .vbhtml)文件中。

© www.soinside.com 2019 - 2024. All rights reserved.