تمرير نموذج عرض إلى فئة المساعد
-
05-07-2019 - |
سؤال
أود أن عرض سحابة الكلمة الدلالية في اختبار التطبيق باستخدام فئة المساعد لخلق html.
يمكنني استخدام كل حلقة في إطلالة جزئية على زيارة كل عنصر في نموذج
Inherits="System.Web.Mvc.ViewUserControl < IEnumerable < MyTestproject.Models.TagCount > >
foreach (var item in Model) {
}
ولكن عندما كنت في محاولة لتمرير نموذج مساعد من الدرجة واستخدام كل حلقة تظهر رسالة الخطأ التالية:
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) {
}
}
ونوع عام على الأسلوب يبدو عديم الفائدة / غير قانوني، لأنه نوع الفعلي، ولذا فإنني إزالته، وكذلك تحديد نوع الوسيطة.
نصائح أخرى
ننظر عن كثب في الفرق بين الرأي الدرجة التوقيع المساعد الخاص بك طريقة التوقيع:
يرث="System.ويب.Mvc.ViewUserControl<IEnumerable<MyTestproject.Models.TagCount>>
الجمهور ثابت سلسلة DisplayCloud<TagCount>(TagCount objTags)
يحتاج طريقة الحصول على IEnumerable<TagCount>
من أجل دعوة foreach.