题
我想在我的测试应用程序中使用帮助程序类来显示标记云来创建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”的公共定义
有什么区别或者我错误地传递了它?
解决方案
因为你传递了另一种类型。
视图正在IEnumerable<TagCount>
帮手正在TagCount
您的帮助程序代码必须是:
public static string DisplayCloud(IEnumerable<TagCount> objTags) {
..
foreach (var item in objTags) {
}
}
该方法的泛型类型似乎无用/非法,因为它是一个实际类型,所以我删除它,以及修复参数类型。
其他提示
仔细查看视图的类签名与辅助方法签名之间的区别:
继承= QUOT <!>; System.Web.Mvc.ViewUserControl LT <!>的的IEnumerable 强> LT <!>; MyTestproject.Models.TagCount GT <!>; <!> GT;
public static string DisplayCloud <!> lt; TagCount <!> gt;(TagCount objTags)
该方法需要接收IEnumerable<TagCount>
才能调用foreach。
不隶属于 StackOverflow