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

我试图用以下的陈述:

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

然而,Razor 在 < before ISQL 时会窒息。

有什么正式的工作吗?

14986 次浏览

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

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

我很欣赏这个“回答”有点晚了,这个问题显然已经得到了令人满意的(和良好的)回答。然而,对于任何未来的访问者到这个网页,如果你想要一个更完整的参考指南,有 刀锋语法简介以及菲尔哈克的非常有用的 剃刀快速参考博客文章。

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

我有:

不起作用:

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

显然,语法变得更严格了,而且由于您位于@{}块中,所以不应该在 Model 之前添加@。例题。但是代码编辑器上的错误指向了泛型,这让我抓狂。

如果代码中没有 < > ,但只是删除了@from Model,那么它就可以正常工作。标题解决问题。

作品:

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

希望这对大家有帮助

这是关于@字符的,这个示例在升级之前可以工作

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

升级后,必须将其分成两个块

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

我有一个奇怪的情况下,我有几个任务内的一个 @{ ... }块。

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

不管我做什么,总会出错,像这样:

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

解决方案 : 我把分配线放到 第二 @{ ... } 博克

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