我想在我的测试应用程序中使用帮助程序类来显示标记云来创建html。
我可以在局部视图中使用a for each循环来访问模型中的每个项目
Inherits="System.Web.Mvc.ViewUserControl < IEnumerable < MyTestproject.Models.TagCount > >
foreach (var item in Model) {
}
但是当我尝试将模型传递给Helper类并为每个循环使用a时,我收到以下错误:
public static string DisplayCloud < TagCount >(TagCount objTags) {
..
foreach (var item in objTags) {
}
}
foreach语句无法对“TagCount”类型的变量进行操作,因为“TagCount”不包含“GetEnumerator”的公共定义
有什么区别或者我错误地传递了它?
答案 0 :(得分:1)
因为你传递了另一种类型。
视图正在获得IEnumerable<TagCount>
帮手正在获得TagCount
您的帮助程序代码必须是:
public static string DisplayCloud(IEnumerable<TagCount> objTags) {
..
foreach (var item in objTags) {
}
}
该方法的泛型类型似乎无用/非法,因为它是一个实际类型,所以我删除它,以及修复参数类型。
答案 1 :(得分:1)
仔细查看视图的类签名与辅助方法签名之间的区别:
继承=“System.Web.Mvc.ViewUserControl&LT;的的IEnumerable 强>&LT; MyTestproject.Models.TagCount&GT;&GT;
公共静态字符串DisplayCloud&lt; TagCount&gt;(TagCount objTags)
该方法需要接收IEnumerable<TagCount>
才能调用foreach。