0

ヘルパー クラスを使用して HTML を作成し、テスト アプリケーションにタグ クラウドを表示したいと考えています。

部分ビューで for each ループを使用して、モデル内の各項目にアクセスできます

Inherits="System.Web.Mvc.ViewUserControl < IEnumerable < MyTestproject.Models.TagCount > >

foreach (var item in Model) {

}

しかし、モデルをヘルパー クラスに渡して for each ループを使用しようとすると、次のエラーが表示されます。

public static string DisplayCloud < TagCount >(TagCount objTags) {

..
       foreach (var item in objTags) {

       }
}

'TagCount' には 'GetEnumerator' のパブリック定義が含まれていないため、foreach ステートメントはタイプ 'TagCount' の変数を操作できません

違いは何ですか、それとも間違って渡していますか?

4

2 に答える 2

1

別の型を渡しているからです。

ビューが得られますIEnumerable<TagCount>

ヘルパーは取得していますTagCount

ヘルパー コードは次のようにする必要があります。

public static string DisplayCloud(IEnumerable<TagCount> objTags) {

..
       foreach (var item in objTags) {

       }
}

メソッドのジェネリック型は実際の型であるため、役に立たない/違法に見えるため、削除し、引数の型を修正しました。

于 2009-10-21T15:40:47.727 に答える
1

ビューのクラス シグネチャとヘルパー メソッドのシグネチャの違いを詳しく見てみましょう。

Inherits="System.Web.Mvc.ViewUserControl< IEnumerable <MyTestproject.Models.TagCount>>

public static string DisplayCloud<TagCount>(TagCount objTags)

IEnumerable<TagCount>メソッドはforeach を呼び出すためにを受け取る必要があります。

于 2009-10-21T15:41:18.753 に答える