質問
ヘルパークラスを使用してテストアプリケーションにタグクラウドを表示して、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>
を受け取る必要があります。
所属していません StackOverflow