View’ler içinde model kullanmak istediğimizde bir modele bağlı kalmak istemediğimiz durumlar olabilir. Örneğin aşağıdaki gibi bir tanımlama yaparsak View, en son tanımlanan Model’i geçerli sayar.
@model StuPerformance.Models.Exam @model StuPerformance.Models.Student
Bunun yerine kullanmak istenen Model’lerin bir araya toplandığı bir üst sınıf olarak düşünülebilecek Model sınıfı kullanabiliriz.
Örneğin Class ve Lecture adında iki modelimiz olsun. Buradaki verileri iki adet DropDownList aracılığıyla View içerisinde göstermeye çalışalım. İlk olarak Models klasörümüze bu iki modeli içeren ayrı bir class oluşturuyoruz.
namespace StuPerformance.Models { public partial class ModelLists { public Class ClassM { get; set; } public Lecture LectureM { get; set; } } }
ModelLists adını verdiğimiz bu modeli ilgili view içinde tanımlayarak hem Class, hem Lecture modellerini kullanabiliriz.
@model StuPerformance.Models.ModelLists @using (Html.BeginForm()) { @Html.AntiForgeryToken() <div class="form-group"> @Html.LabelFor(model => model.StudentExamM, "Class", new { @class = "control-label col-md-2" }) <div class="col-md-10"> @Html.DropDownList("ClassId", String.Empty) @Html.ValidationMessageFor(model => model.ClassM.ClassId) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.StudentExamM, "Lecture", new { @class = "control-label col-md-2" }) <div class="col-md-10"> @Html.DropDownList("LectureID", String.Empty) @Html.ValidationMessageFor(model => model.LectureM.LectureID) </div> </div> }
Burada ilk DropDownList için model.ClassM.ClassId, diğer DropDownList için model.LectureM.LectureID kullanılmıştır.