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

kid*_*man 69 asp.net-mvc razor asp.net-mvc-3

我试图使用以下语句:

@Html.Test<ISQL>().Nand()
Run Code Online (Sandbox Code Playgroud)

然而,Razor在ISQL之前窒息.

任何正式的工作吗?

mar*_*ind 98

要使用泛型方法,您需要转义表达式

@(Html.Test<ISQL>().Nand())
Run Code Online (Sandbox Code Playgroud)

  • 啊! 刚看到你的个人资料!您是ASP.NET MVC团队的一员!甜! (3认同)

Jua*_*rey 14

当我在升级mvc时寻找这个"同样的错误"时,我才发现这个问题.

我有:

不起作用:

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

显然,语法更严格,因为你在@ {}块中,你不应该在示例上的Model.Title之前添加@.但代码编辑器上的错误指向泛型,它让我发疯.

如果代码中没有<>,它可以正常工作,但只是从Model.Title中删除@修复了问题.

作品:

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

希望这对任何人都有帮助


Ric*_*lly 6

我很欣赏这个"答案"有些晚了,这个问题显然已经得到了令人满意的答案.但是,对于此页面的任何未来访问者,如果您正在阅读更完整的参考指南,那么MS将介绍Razor语法以及Phil Haack非常有用的Razor快速参考博客文章.


Bea*_*uty 5

我有一个奇怪的案例,当我在一个@{ ... }Bock里面有几个任务时。

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

无论我做什么,总是有错误,像这样:

使用泛型类型“List”需要一个类型参数

解决方案:我将分配行放到第二个 @{ ... } bock 中

@{
    // ... other assignments
}
@{
    List<string> stringList = new List<string>()  // WORKS
}
Run Code Online (Sandbox Code Playgroud)