سؤال

أنا أقوم بإنشاء تطبيق .NET MVC ولدي عرضي أريد فيه عرض ما يلي:

فئة

تليها قائمة العناصر للفئة الحالية

ربما] تليها قائمة العناصر الفرعية لهذا البند الحالي

يمكنني إنشاء فئة ViewModel مخصصة التي ترسل 3 قوائم منفصلة iEnumerable (الفئات والعناصر والعناصر الفرعية). المشكلة في هذا النهج ليست هناك طريقة سهلة لتقديم البيانات في الترتيب الصحيح (التسلسل الهرمي) في الرأي. مع هذا النهج، سيكون لدي ثلاث قوائم، ثم تحتاج إلى إضافة منطق مشروط أثناء التقديم. هذا يعني أنه سيتم تكرير كل قائمة العناصر عدة مرات كما أحاول فتح العناصر في المراكز المناسبة على الصفحة.

أفضل أن أترك البيانات في النظام الصحيح، ربما كملف XML. ما هو النهج الصحيح هنا؟

لقد تفكرت أيضا في تقلص البيانات الموجودة في وحدة التحكم وتمويل النص المنسق إلى العرض، ولكن يبدو أن هذا ينتهك فكرة وجود مقبض عرض.

هل كانت مفيدة؟

المحلول

سأبقى بعيدا عن XML هنا. تمرير التسلسل الهرمي المناسب؛ هذا يبدو معقولا:

public class ViewModel
{
    Category[] Categories { get; set; }
}

public class Category
{
    Item[] Items { get; set; }
}

public class Item
{
    Item[] SubItems { get; set; }
}

ثم يمكنك التداخل foreach حلقات داخل وجهة نظرك.

نصائح أخرى

ما يجب أن تفعله هو نوع مخصص مع قائمة الفئات الخاصة بك، ولكل عنصر خاصية حيث توجد العناصر الفرعية.

يمكن تحقيق ذلك بسهولة في إطار الكيان، باستخدام الملاحة الصحيحة.

أود أن أنشئ فئة نموذج الفئة مع عناصر من النوع IEnumerable<item>.

ثم تشمل an. IEnumerable<subItem> subItems الممتلكات في item صف دراسي.

المنظر من خلال هذه العناصر والعناصر الفرعية بسهولة للغاية.

يحرر: في الواقع إذا كانت العناصر الفرعية هي نفسها تماما مثل العناصر، فيمكن أن تكون هناك واحدة فقط item فئة مع IEnumerable<item> subItems خاصية. هذا سيسمح أيضا بمستويات غير محدودة من العناصر الفرعية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top