質問

ヘルパークラスを使用してテストアプリケーションにタグクラウドを表示して、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」タイプの変数を操作できません

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

役に立ちましたか?

解決

異なる型を渡すため。

ビューはIEnumerable<TagCount>

を取得しています

ヘルパーはTagCount

を取得しています

ヘルパーコードは次のとおりである必要があります:

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

..
       foreach (var item in objTags) {

       }
}

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

他のヒント

ビューのクラスシグネチャとヘルパーメソッドのシグネチャの違いをより詳しく見てください:

  

Inherits = <!> quot; System.Web.Mvc.ViewUserControl <!> lt; IEnumerable <!> lt; MyTestproject.Models.TagCount <!> gt; <!> gt;

     

public static string DisplayCloud <!> lt; TagCount <!> gt;(TagCount objTags)

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top