使用Razor定义类的别名

Tom*_*ana 7 c# asp.net-mvc razor asp.net-mvc-3

在普通的C#代码中,我可以使用using语句来定义类名的别名,例如

using MyAlias = Some.Long.Namespace.Class;
Run Code Online (Sandbox Code Playgroud)

我在剃刀视图中尝试过相同的方法,这是一种天真的方法

@using MyAlias = Some.Long.Namespace.Class
Run Code Online (Sandbox Code Playgroud)

不起作用.有没有办法达到同样的效果?

Dar*_*rov 11

你为什么想这么做?无论你需要什么原因,都可能有更好的方法.你应该避免在Razor视图中编写C#代码,所以你不应该需要它.Razor视图中所需的只是视图模型的命名空间,因为这是视图应该操作的所有内容.

@model MyViewModel
...
Run Code Online (Sandbox Code Playgroud)

将别名和C#代码保留在它们所属的位置 - 控制器,模型,帮助程序,......

所有这一切,别名应该工作.例如,以下视图对我来说非常好:

@using foo = System.IO;
<div>
    @foo.Path.GetFileName(@"c:\work\foo.txt")
</div>
Run Code Online (Sandbox Code Playgroud)

  • 如果您想在视图中使用"MyViewModel"而不是"Model"来引用模型,该怎么办?即MyViewModel.MyProperty而不是Model.MyProperty (5认同)