C# mvc3 razor引擎是否支持List.ForEach()的输出
我有两个代码块,首先:C# mvc3 razor引擎是否支持List.ForEach()的输出,c#,asp.net-mvc,asp.net-mvc-3,razor,C#,Asp.net Mvc,Asp.net Mvc 3,Razor,我有两个代码块,首先: @foreach(var filterName in Model.FilterNames){ <text> $("#@filterName").combobox({ source:"@(filterName)Autocomplete" }); </text> } @foreach(Model.filterName中的变量filterName){ $(“#@filterName
@foreach(var filterName in Model.FilterNames){
<text>
$("#@filterName").combobox({
source:"@(filterName)Autocomplete"
});
</text>
}
@foreach(Model.filterName中的变量filterName){
$(“#@filterName”).combobox({
来源:“@(过滤器名称)自动完成”
});
}
第二:
@Model.FilterNames.ForEach(filterName => {
<text>
$("#@filterName").combobox({
source:"@(filterName)Autocomplete"
});
</text>
})
@Model.filterName.ForEach(filterName=>{
$(“#@filterName”).combobox({
来源:“@(过滤器名称)自动完成”
});
})
第二个不行。有人知道razor是否支持这种语法吗?或者我做错了什么?
ForEach
是列表上的一种方法,通常是人们在IEnumerable
上创建的一种扩展方法(因此您可能缺少@using
指令,用于System.Collections.Generic
和/或整个扩展方法),但许多人(包括)从函数式编程的角度来看,这是一个糟糕的设计
坚持你的第一个
或者更好的方法是,使用编辑器模板并将循环一起保存。在razor中使用方法时,它将假定它是帮助程序或属性,并返回帮助程序结果或数据
由于List.ForEach方法不返回任何内容,因此调用将失败。我包含System.Collections.Generic,所以不是这样。错误在$(“#@filterName”).combobox({
。错误显示CS1056:意外字符“$”@qrow-尝试在@functions{…}中包装该JS位
block.IsModel.FilterNames
类型List
?尽管如此,我还是不同意在这里使用这种方法。只要使用一个编辑器模板,这是合乎逻辑和正确的做法。所以目前razor不支持这种语法?不,它不会在网页库中找到任何重载。编写将作废>作为参数,因为它在C#中是不允许的。您必须返回要显示的数据或HelperResult
。可以使用类似的方法,但必须使用helper方法:请参阅“将内联模板作为参数传递”一节在Razor中,当前不支持匿名方法,这就是为什么您的第二个方法不起作用的原因。