Bir Denetleyiciden Modelinizin Verilerine Erişme (C#)
tarafından Rick Anderson
Not
Bu öğreticinin ASP.NET MVC 5 ve Visual Studio 2013 kullanan güncelleştirilmiş bir sürümü burada mevcuttur. Daha güvenlidir, takip etmek çok daha kolaydır ve daha fazla özellik gösterir.
Bu öğreticide, Microsoft Visual Studio'nun ücretsiz sürümü olan Microsoft Visual Web Developer 2010 Express Service Pack 1'i kullanarak ASP.NET MVC Web uygulaması oluşturmanın temelleri öğretilecektir. Başlamadan önce, aşağıda listelenen önkoşulları yüklediğinizden emin olun. Aşağıdaki bağlantıya tıklayarak bunların tümünü yükleyebilirsiniz: Web Platformu Yükleyicisi. Alternatif olarak, aşağıdaki bağlantıları kullanarak önkoşulları tek tek yükleyebilirsiniz:
- Visual Studio Web Developer Express SP1 önkoşulları
- ASP.NET MVC 3 Araçları Güncelleştirmesi
- SQL Server Compact 4.0(çalışma zamanı + araçlar desteği)
Visual Web Developer 2010 yerine Visual Studio 2010 kullanıyorsanız, aşağıdaki bağlantıya tıklayarak önkoşulları yükleyin: Visual Studio 2010 önkoşulları.
C# kaynak koduna sahip bir Visual Web Developer projesi bu konuya eşlik edebilir. C# sürümünü indirin. Visual Basic'i tercih ediyorsanız bu öğreticinin Visual Basic sürümüne geçin.
Bu bölümde, yeni MoviesController
bir sınıf oluşturacak ve film verilerini alan ve bir görünüm şablonu kullanarak tarayıcıda görüntüleyen kod yazacaksınız. Devam etmeden önce uygulamanızı derlemeyi unutmayın.
Denetleyiciler klasörüne sağ tıklayın ve yeni MoviesController
bir denetleyici oluşturun. Aşağıdaki seçenekleri belirtin:
- Denetleyici adı: MoviesController. (Bu varsayılandır. )
- Şablon: Entity Framework kullanarak okuma/yazma eylemleri ve görünümleri olan denetleyici.
- Model sınıfı: Movie (MvcMovie.Models).
- Veri bağlam sınıfı: MovieDBContext (MvcMovie.Models).
- Görünümler: Razor (CSHTML). (Varsayılan.)
Ekle'ye tıklayın. Visual Web Developer aşağıdaki dosya ve klasörleri oluşturur:
- Projenin Controllers klasöründe bir MoviesController.cs dosyası.
- Projenin Görünümler klasöründe bir Filmler klasörü.
- Yeni Views\Movies klasöründe Create.cshtml, Delete.cshtml, Details.cshtml, Edit.cshtml ve Index.cshtml.
ASP.NET MVC 3 yapı iskelesi mekanizması, CRUD (oluşturma, okuma, güncelleştirme ve silme) eylem yöntemlerini ve görünümlerini sizin için otomatik olarak oluşturmuştur. Artık film girdileri oluşturmanıza, listelemenize, düzenlemenize ve silmenize olanak tanıyan tam işlevsel bir web uygulamanız var.
Uygulamayı çalıştırın ve tarayıcınızın adres çubuğundaki Movies
URL'ye /Movies ekleyerek denetleyiciye göz atın. Uygulama varsayılan yönlendirmeye bağlı olduğundan ( Global.asax dosyasında tanımlanır), tarayıcı isteği http://localhost:xxxxx/Movies
denetleyicinin varsayılan Index
eylem yöntemine Movies
yönlendirilir. Başka bir deyişle, tarayıcı isteği http://localhost:xxxxx/Movies
etkin bir şekilde tarayıcı isteği http://localhost:xxxxx/Movies/Index
ile aynıdır. Sonuç, henüz hiç film eklemediğiniz için boş bir film listesidir.
Film Oluşturma
Yeni Oluştur bağlantısını seçin. Filmle ilgili bazı ayrıntıları girin ve Oluştur düğmesine tıklayın.
Oluştur düğmesine tıklanması, formun film bilgilerinin veritabanına kaydedildiği sunucuya nakledilmesine neden olur. Daha sonra listede yeni oluşturulan filmi görebileceğiniz /Movies URL'sine yönlendirilirsiniz.
Birkaç film girdisi daha oluşturun. Tümü işlevsel olan Düzenle, Ayrıntılar ve Sil bağlantılarını deneyin.
Oluşturulan Kodu inceleme
Controllers\MoviesController.cs dosyasını açın ve oluşturulan Index
yöntemi inceleyin. Film denetleyicisinin yöntemiyle Index
bir bölümü aşağıda gösterilmiştir.
public class MoviesController : Controller
{
private MovieDBContext db = new MovieDBContext();
//
// GET: /Movies/
public ViewResult Index()
{
return View(db.Movies.ToList());
}
Sınıfından MoviesController
aşağıdaki satır, daha önce açıklandığı gibi bir film veritabanı bağlamı oluşturur. Filmleri sorgulamak, düzenlemek ve silmek için film veritabanı bağlamını kullanabilirsiniz.
private MovieDBContext db = new MovieDBContext();
Denetleyiciye yönelik Movies
bir istek, film veritabanının tablosundaki Movies
tüm girişleri döndürür ve ardından sonuçları görünüme Index
geçirir.
Kesin Türü Belirlenmiş Modeller ve @model Anahtar Sözcük
Bu öğreticinin önceki bölümlerinde, bir denetleyicinin nesneyi kullanarak verileri veya nesneleri bir görünüm şablonuna ViewBag
nasıl geçirebileceğini gördünüz. ViewBag
, bilgileri bir görünüme geçirmek için kullanışlı bir geç bağlı yol sağlayan dinamik bir nesnedir.
ASP.NET MVC, kesin olarak yazılan verileri veya nesneleri bir görünüm şablonuna geçirme olanağı da sağlar. Bu kesin olarak belirlenmiş yaklaşım, Visual Web Developer düzenleyicisinde kodunuzun daha iyi derlenmesine ve daha zengin IntelliSense'e olanak tanır. Bu yaklaşımı sınıf ve Index.cshtml görünüm şablonuyla MoviesController
kullanıyoruz.
Kodun eylem yönteminde View
yardımcı yöntemini çağırdığında nasıl bir List
nesne oluşturduğuna Index
dikkat edin. Kod daha sonra bu Movies
listeyi denetleyiciden görünüme geçirir:
public ViewResult Index()
{
return View(db.Movies.ToList());
}
Görünüm şablonu dosyasının en üstüne bir @model
deyim ekleyerek, görünümün beklediği nesne türünü belirtebilirsiniz. Film denetleyicisini oluşturduğunuzda, Visual Web Developer otomatik olarak Index.cshtml dosyasının en üstüne aşağıdaki @model
deyimini ekler:
@model IEnumerable<MvcMovie.Models.Movie>
Bu @model
yönerge, kesin olarak yazılan bir Model
nesne kullanarak denetleyicinin görünüme geçirdiği film listesine erişmenizi sağlar. Örneğin, Index.cshtml şablonunda kod, kesin olarak yazılan Model
nesne üzerinde bir foreach
deyim yaparak filmler arasında döngü yapar:
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.Title)
</td>
<td>
@Html.DisplayFor(modelItem => item.ReleaseDate)
</td>
<td>
@Html.DisplayFor(modelItem => item.Genre)
</td>
<td>
@Html.DisplayFor(modelItem => item.Price)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id=item.ID }) |
@Html.ActionLink("Details", "Details", new { id=item.ID }) |
@Html.ActionLink("Delete", "Delete", new { id=item.ID })
</td>
</tr>
}
Model
Nesne kesin olarak yazıldığı için (nesne IEnumerable<Movie>
olarak), döngüdeki her item
nesne olarak Movie
yazılır. Bu, kod düzenleyicisinde kodun derleme zamanı denetimini ve tam IntelliSense desteğini elde ettiğiniz anlamına gelir:
SQL Server Compact ile çalışma
Entity Framework Code First, sağlanan veritabanı bağlantı dizesinin henüz var olmayan bir Movies
veritabanına işaret ettiğini algıladı, bu nedenle Code First veritabanını otomatik olarak oluşturdu. App_Data klasörüne bakarak oluşturulduğunu doğrulayabilirsiniz. Movies.sdf dosyasını görmüyorsanız, Çözüm Gezgini araç çubuğunda Tüm Dosyaları Göster düğmesine tıklayın, Yenile düğmesine tıklayın ve ardından App_Data klasörünü genişletin.
Sunucu Gezgini'ne çift tıklayarak Movies.sdf dosyasını açın. Ardından, veritabanında oluşturulmuş tabloları görmek için Tablolar klasörünü genişletin.
Not
Movies.sdf'ye çift tıkladığınızda hata alırsanız 4.0 SQL Server Compact yüklediğinizden emin olun (çalışma zamanı + araçlar desteği). (Yazılımın bağlantıları için bu öğretici serisinin 1. bölümündeki önkoşulların listesine bakın.) Sürümü şimdi yüklerseniz Visual Web Developer'ı kapatıp yeniden açmanız gerekir.
Biri varlık kümesi, diğeri de tablo için Movie
olan EdmMetadata
iki tablo vardır. Tablo EdmMetadata
, modelle veritabanının ne zaman eşitlenmediğini belirlemek için Entity Framework tarafından kullanılır.
Oluşturduğunuz verileri görmek için tabloya Movies
sağ tıklayın ve Tablo Verilerini Göster'i seçin.
Tabloya sağ tıklayın ve Tablo Şemasını Movies
Düzenle'yi seçin.
Tablo şemasının Movies
daha önce oluşturduğunuz sınıfla nasıl eşlediğinize Movie
dikkat edin. Entity Framework Code First bu şemayı sınıfınızı Movie
temel alarak sizin için otomatik olarak oluşturmuştur.
İşiniz bittiğinde bağlantıyı kapatın. (Bağlantıyı kapatmıyorsanız, projeyi bir sonraki çalıştırmanızda bir hata alabilirsiniz).
Artık veritabanının içeriğini görüntülemek için basit bir listeleme sayfasına sahipsiniz. Sonraki öğreticide, iskelesi oluşturulmuş kodun geri kalanını inceleyecek ve bu veritabanında film aramanızı sağlayan bir SearchIndex
SearchIndex
yöntem ve görünüm ekleyeceğiz.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin