ASP.NET MVC’de Bir View İçinde Birden Çok Model Kullanımı

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.

Reklamlar

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Connecting to %s