C# 使用Razor为类定义别名

C# 使用Razor为类定义别名,c#,asp.net-mvc,asp.net-mvc-3,razor,C#,Asp.net Mvc,Asp.net Mvc 3,Razor,在普通C#代码中,我可以使用using语句为类名定义别名,例如 using MyAlias = Some.Long.Namespace.Class; 我也尝试过同样的观点,一种幼稚的方法,比如 @using MyAlias = Some.Long.Namespace.Class 不起作用。有没有办法达到同样的效果?你为什么要这样做?不管你为什么需要这个,可能有更好的方法。无论如何,您应该避免在Razor视图中编写C#代码,因此您不需要它。Razor视图中所需要的只是视图模型的名称空间,因为这

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

using MyAlias = Some.Long.Namespace.Class;
我也尝试过同样的观点,一种幼稚的方法,比如

@using MyAlias = Some.Long.Namespace.Class

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

你为什么要这样做?不管你为什么需要这个,可能有更好的方法。无论如何,您应该避免在Razor视图中编写C#代码,因此您不需要它。Razor视图中所需要的只是视图模型的名称空间,因为这是视图应该处理的全部内容

@model MyViewModel
...
将别名和C#代码保留在它们所属的位置—控制器、模型、助手

尽管如此,这些别名应该可以工作。例如,以下视图对我来说运行得非常好:

@using foo = System.IO;
<div>
    @foo.Path.GetFileName(@"c:\work\foo.txt")
</div>
@使用foo=System.IO;
@foo.Path.GetFileName(@“c:\work\foo.txt”)

Razor不支持它,但C#支持它。我同意你的看法,那会有用的。跟踪此请求的问题如下:


如果您想在视图中使用“MyViewModel”而不是“Model”引用您的模型,该怎么办?i、 e.MyViewModel.MyProperty而不是Model.MyProperty想要这样做至少有两个很好的理由@安德鲁在上面提到了一个。另一种方法是,如果您刚刚创建或引用了一个新的组件库,并且希望在应用程序范围内将每个新组件与现有组件进行匹配,那么您可以轻松地交换库。例如:@using-InputText=ThirdParty.RazorComponents.SpecialInputText@using-inputextarea=ThirdParty.RazorComponents.SpecialTextArea自问题提出9年零一个月以来,Razor语法仍然不支持这个问题,即使C#可以做到。