• 0

هل يمكن تمرير نوعين مختلفين لـ Model Object إلى صفحة View ؟

عندي صف Model Class يمثل الطالب Student Class وصف آخر يمثل المساق Course أريد إنشاء كائن من كل صف وإظهاره إلى صفحة View وعرض اسم الطالب مع المساق الخاص به هل يوجد طريقة لعمل ذلك في ASP.Net MVC؟

تمّ تعديل بواسطة Programmer

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

نعم يمكنك تمرير أكثر من نوع كائن (أكثر من  Model Class) إلى View ولكن الأمر ليس بالبساطة الشديدة وذلك لأن الـ View لا يمكنها استقبال أكثر من نوع Model واحد فقط ((أي كائن أو مجموعة كائنات من نوع واحد  one type of object/objects)).

مثلًا لنفرض أنه لديك Model Class يدعى Student يمكنك تمرير كائن من نوع Student أو مجموعة كائنات من نفس النوع وهو Student إلى الصفحة View. ولكن لا تستطيع تمرير كائن من نوع Student وكائن من نوع Course (أكثر من Model Class) إلى View إلا إن قمتَ بجمعهما ضمن Model Class جديد مثلًا Student_Course ومن ثم تمرير كائن من نوع Student_Course إلى الـ View. وهذا ما يسمى بـ ViewModels.

مثال:

Student Model Class

 public class Student
    {
        public string firstName { get; set;}
        public string lastName { get; set; }

    }

Course Model Class

public class Course
    {
        public int courseNumber { get; set; }
        public string courseName { get; set; }
    }

Student_Course Model Class

 public class Student_Course
    {
        public Course course { get; set; }
        public List<Student> students{ get; set; }

    }

الآن لتمرير الكائن من نوع Student_Course إلى View ولتكن الصفحة index.cshtml يتم ذلك عن طريق الدالة الخاصة بالصفحة index.cstml وتدعى index وهي دالة Action Method الموجودة في المتحكم Controller:

public ActionResult Index()
        {
            Course mathCourse = new Course();
            mathCourse.courseNumber = 101;
            mathCourse.courseName = "Math";

            Student std1 = new Student();
            std1.firstName = "Mark";
            std1.lastName = "Join";

            Student std2 = new Student();
            std1.firstName = "John";
            std1.lastName = "Doe";

            List<Student> students = new List<Student>();
            students.Add(std1);
            students.Add(std2);

            Student_Course obj = new Student_Course();
            obj.course = mathCourse;
            obj.students = students;

            return View(obj);
        }

تم تمرير الكائن obj من نوع Student_Course عبر الدالة View التي تُرجعها الدالة Index Action Method الخاصة بالصفحة index.cshtml

أخيرًا لجعل الصفحة index.cshtml تستقبل الكائن obj اكتب السطر التالي:

@model MyMVCProject.Models.Student_Course

لعرض محتوى الكائن obj في الصفحة index.cshtml:

<h1>Course Name: @Model.course.courseName</h1>

@foreach (var item in Model.students)
{
    
    <h1>Student Name: @item.firstName @item.lastName</h1>
}

ملاحظة: يستحسن دائمًا وضع الصفوف Model Class والتي تحوي أكثر من Model Class في مجلد آخر منفصل عن المجلد Models وتسميته بـ View Model

ليصبح مسار Student_Course على الشكل التالي:

@model MyMVCProject.ViewModels.Student_Course

 

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن