【发布时间】:2023-03-11 17:30:01
【问题描述】:
我试图使用以下语句:
@Html.Test<ISQL>().Nand()
但是,Razor 在 ISQL 之前的
有什么官方的解决办法吗?
【问题讨论】:
-
...您是否因为没有将其放入代码块中而遗漏了什么?我没有看到任何小于号...
标签: asp.net-mvc asp.net-mvc-3 razor
我试图使用以下语句:
@Html.Test<ISQL>().Nand()
但是,Razor 在 ISQL 之前的
有什么官方的解决办法吗?
【问题讨论】:
标签: asp.net-mvc asp.net-mvc-3 razor
要使用泛型方法,您需要对表达式进行转义
@(Html.Test<ISQL>().Nand())
【讨论】:
我很欣赏这个“答案”有点晚了,而且这个问题显然已经得到了令人满意的(而且很好)的回答。但是,对于此页面的任何未来访问者,如果您需要更完整的参考指南,请参阅 MS introduction to Razor syntax 以及 Phil Haack 非常有用的 Razor quick reference 博客文章。
【讨论】:
我在升级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;
}
希望这对任何人都有帮助
【讨论】:
关于@字符,此示例在升级之前有效
@{
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
}
无论我做什么,总是有错误,像这样:
使用泛型“List”需要一个类型参数
解决方案:
我将赋值行放在 second @{ ... } bock。
@{
// ... other assignments
}
@{
List<string> stringList = new List<string>() // WORKS
}
【讨论】: