如何在Razor视图文件中使用通用语法?

我试图用下面的语句:

@Html.Test<ISQL>().Nand() 

但是,在ISQL之前,Razor正在窒息。

任何官方的工作呢?

要使用generics方法,您需要转义expression式

 @(Html.Test<ISQL>().Nand()) 

当我升级mvc时,我正在寻找这个“同样的错误”,我刚刚发现这个问题。

我有:

不起作用:

 @{ ViewBag.Title = "Something " + @Model.Title; var something = (IEnumerable<SelectListItem>)ViewBag.Options; } 

显然,语法更加严格,而且当您位于@ {}块内时,您不应该在示例中的Model.Title之前添加@。 但代码编辑器的错误是指向通用,它让我疯了。

如果在代码里面没有<>,它就可以正常工作,但是从Model.Title中删除@可以解决这个问题。

作品:

 @{ ViewBag.Title = "Something " + Model.Title; var something = (IEnumerable<SelectListItem>)ViewBag.Options; } 

希望这有助于任何人

我很欣赏这个“答案”有点晚,问题显然已经得到满意的回答。 然而,对于这个页面的任何未来访问者来说,如果你正在阅读更完整的参考指南,那么就有关于Razor语法的MS介绍以及Phil Haack非常有用的Razor快速参考博客文章。

这是关于@字符,这个例子在升级之前是有效的

 @{ string @class = ViewBag.@class; IDictionary<string, object> htmlAttributes = new Dictionary<string, object>(); } 

升级后,必须分成两块

 @{ string @class = ViewBag.@class; } @{ IDictionary<string, object> attrs = new Dictionary<string, object>(); } 

当我在一个@{ ... } bock中有几个任务时,我遇到了一个奇怪的情况。

 @{ // ... other assignments (without error) List<string> stringList = new List<string>() // ERROR MESSAGE HERE } 

我做了什么,总是有这样的错误:

使用genericstypes“List”需要一个types参数

解决方法 :我把赋值行放在第二个 @{ ... } bock中

 @{ // ... other assignments } @{ List<string> stringList = new List<string>() // WORKS }