我想在我的测试应用程序中使用帮助程序类来显示标记云来创建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。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top