اذهب إلى المحتوى
  • 0

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

Programmer

السؤال

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

تم التعديل في بواسطة Programmer
رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 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

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...