我试图使用以下声明:
@Html.Test<ISQL>().Nand()
然而,Razor正在窒息&lt;在ISQL之前。
任何正式的工作吗?
答案 0 :(得分:96)
要使用泛型方法,您需要转义表达式
@(Html.Test<ISQL>().Nand())
答案 1 :(得分:14)
当我在升级mvc时遇到“同样的错误”时,我才发现这个问题。
我有:
不起作用:
@{
ViewBag.Title = "Something " + @Model.Title;
var something = (IEnumerable<SelectListItem>)ViewBag.Options;
}
显然,语法更严格,而且当你在@ {}块中时,你不应该在示例上的Model.Title之前添加@。但是代码编辑器上的错误指向了泛型,这让我很疯狂。
如果没有&lt;&gt;它可以正常工作在代码中,但只是从Model.Title中删除@修复了问题。
<强>使用:强>
@{
ViewBag.Title = "Something " + Model.Title;
var something = (IEnumerable<SelectListItem>)ViewBag.Options;
}
希望这对任何人都有帮助
答案 2 :(得分:6)
我很欣赏这个'答案'有些晚了,这个问题显然已经得到了令人满意的答案。但是,对于此页面的任何未来访问者,如果您正在阅读更完整的参考指南,那么MS introduction to Razor syntax以及Phil Haack非常有用的Razor quick reference博客文章。
答案 3 :(得分:4)
当我在一个@{ ... }
bock中进行了多次任务时,我遇到了一个奇怪的案例。
@{
// ... other assignments (without error)
List<string> stringList = new List<string>() // ERROR MESSAGE HERE
}
我做过什么,总是有错误,比如:
使用通用类型&#39;列表&#39;需要一个类型参数
解决方案:
我将分配行设置为第二个 @{ ... }
bock 。
@{
// ... other assignments
}
@{
List<string> stringList = new List<string>() // WORKS
}
答案 4 :(得分:2)
关于@字符,此示例在升级之前有效
@{
string @class = ViewBag.@class;
IDictionary<string, object> htmlAttributes = new Dictionary<string, object>();
}
升级后,必须将其分成两个块
@{ string @class = ViewBag.@class; }
@{ IDictionary<string, object> attrs = new Dictionary<string, object>(); }