将视图模型传递给辅助类

时间:2009-10-21 15:36:29

标签: asp.net-mvc helper

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

有什么区别或者我错误地传递了它?

2 个答案:

答案 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。