Aracılığıyla paylaş


ASP.NET MVC ile 15 Dakika İçinde Bir Film Veritabanı Uygulaması Oluşturma (C#)

tarafından Stephen Walther

Kodu İndir

Stephen Walther baştan sona veritabanı tabanlı ASP.NET MVC uygulamasının tamamını oluşturur. Bu öğretici, ASP.NET MVC Framework'e yeni katılan ve ASP.NET MVC uygulaması oluşturma süreci hakkında fikir edinmek isteyen kişiler için harika bir giriş niteliğindedir.

Bu öğreticinin amacı, bir ASP.NET MVC uygulaması oluşturmak için size "nasıldır" duygusunu vermektir. Bu öğreticide, baştan sona bir ASP.NET MVC uygulamasının tamamını derlemeye başladım. Veritabanı kayıtlarını nasıl listeleyebileceğinizi, oluşturabileceğinizi ve düzenleyebileceğinizi gösteren basit bir veritabanı tabanlı uygulama oluşturmayı gösteriyorum.

Uygulamamızı oluşturma sürecini basitleştirmek için Visual Studio 2008'in yapı iskelesi özelliklerinden yararlanacağız. Visual Studio'nun denetleyicilerimiz, modellerimiz ve görünümlerimiz için ilk kodu ve içeriği oluşturmasına izin vereceğiz.

Active Server Pages veya ASP.NET ile çalıştıysanız ASP.NET MVC'yi çok tanıdık bulmalısınız. ASP.NET MVC görünümleri, Active Server Pages uygulamasındaki sayfalara çok benzer. Geleneksel bir ASP.NET Web Forms uygulaması gibi ASP.NET MVC de .NET framework tarafından sağlanan zengin dil ve sınıf kümesine tam erişim sağlar.

Bu öğreticinin size bir ASP.NET MVC uygulaması oluşturma deneyiminin, Active Server Pages veya ASP.NET Web Forms uygulaması oluşturma deneyiminden hem benzer hem de farklı olduğu konusunda bir fikir vereceğini umuyorum.

Film Veritabanı Uygulamasına Genel Bakış

Hedefimiz işleri basit tutmak olduğundan çok basit bir Film Veritabanı uygulaması oluşturacağız. Basit Film Veritabanı uygulamamız üç şey yapmamıza olanak sağlar:

  1. Bir dizi film veritabanı kaydını listeleme
  2. Yeni film veritabanı kaydı oluşturma
  3. Var olan bir film veritabanı kaydını düzenleme

İşleri basit tutmak istediğimizden, uygulamamızı oluşturmak için gereken ASP.NET MVC çerçevesinin minimum özellik sayısından yararlanacağız. Örneğin, Test-Driven Geliştirme'nin avantajlarından yararlanmayacağız.

Uygulamamızı oluşturmak için aşağıdaki adımların her birini tamamlamamız gerekir:

  1. ASP.NET MVC Web Uygulaması Projesi Oluşturma
  2. Veritabanını oluşturma
  3. Veritabanı modelini oluşturma
  4. ASP.NET MVC denetleyicisini oluşturma
  5. ASP.NET MVC görünümlerini oluşturma

Başlangıç bilgileri

ASP.NET MVC uygulaması oluşturmak için Visual Studio 2008 veya Visual Web Developer 2008 Express gerekir. ayrıca ASP.NET MVC çerçevesini de indirmeniz gerekir.

Visual Studio 2008'e sahip değilseniz bu web sitesinden Visual Studio 2008'in 90 günlük deneme sürümünü indirebilirsiniz:

https://msdn.microsoft.com/vs2008/products/cc268305.aspx

Alternatif olarak, Visual Web Developer Express 2008 ile ASP.NET MVC uygulamaları oluşturabilirsiniz. Visual Web Developer Express kullanmaya karar verirseniz Service Pack 1 yüklü olmalıdır. Visual Web Developer 2008 Express With Service Pack 1'i bu web sitesinden indirebilirsiniz:

https://www.microsoft.com/downloads/details.aspx?FamilyId=BDB6391C-05CA-4036-9154-6DF4F6DEBD14& displaylang=en

Visual Studio 2008 veya Visual Web Developer 2008'i yükledikten sonra ASP.NET MVC çerçevesini yüklemeniz gerekir. ASP.NET MVC çerçevesini aşağıdaki web sitesinden indirebilirsiniz:

https://www.asp.net/mvc/

Not

ASP.NET çerçevesini ve ASP.NET MVC çerçevesini tek tek indirmek yerine Web Platformu Yükleyicisi'nden yararlanabilirsiniz. Web Platformu Yükleyicisi, yüklü uygulamaları kolayca yönetmenizi sağlayan bir uygulamadır:

https://www.microsoft.com/web/gallery/Install.aspx

ASP.NET MVC Web Uygulaması Projesi Oluşturma

Visual Studio 2008'de yeni bir ASP.NET MVC Web Uygulaması projesi oluşturarak başlayalım. Dosya, Yeni Proje menü seçeneğini belirlediğinizde Şekil 1'de Yeni Proje iletişim kutusunu görürsünüz. Programlama dili olarak C# öğesini seçin ve ASP.NET MVC Web Uygulaması proje şablonunu seçin. Projenize MovieApp adını verin ve Tamam düğmesine tıklayın.

Ad alanında ASP noktası Net MVC Web Uygulaması şablonunun seçildiğini ve Film Uygulaması'nın seçildiğini gösteren Yeni Proje iletişim kutusunun ekran görüntüsü.

Şekil 01: Yeni Proje iletişim kutusu (Tam boyutlu görüntüyü görüntülemek için tıklayın)

Yeni Proje iletişim kutusunun en üstündeki açılan listeden .NET Framework 3.5'i seçtiğinizden emin olun; ASP.NET MVC Web Uygulaması proje şablonu görüntülenmez.

Yeni bir MVC Web Uygulaması projesi oluşturduğunuzda, Visual Studio sizden ayrı bir birim testi projesi oluşturmanızı ister. Şekil 2'deki iletişim kutusu görüntülenir. Zaman kısıtlamaları nedeniyle bu öğreticide testler oluşturmayacağımızdan (ve evet, bu konuda biraz suçlu hissetmemiz gerekir) Hayır seçeneğini belirleyin ve Tamam düğmesine tıklayın.

Not

Visual Web Developer test projelerini desteklemez.

Hayır, birim testi projesi oluşturma'nın seçili olduğunu gösteren Birim Testi Projesi Oluştur'un ekran görüntüsü.

Şekil 02: Birim Testi Projesi Oluştur iletişim kutusu (Tam boyutlu görüntüyü görüntülemek için tıklayın)

ASP.NET MVC uygulaması standart bir klasör kümesine sahiptir: Modeller, Görünümler ve Denetleyiciler klasörü. Bu standart klasör kümesini Çözüm Gezgini penceresinde görebilirsiniz. Film Veritabanı uygulamamızı oluşturmak için Modeller, Görünümler ve Denetleyiciler klasörlerinin her birine dosya eklememiz gerekir.

Visual Studio ile yeni bir MVC uygulaması oluşturduğunuzda örnek bir uygulama alırsınız. Sıfırdan başlamak istediğimiz için bu örnek uygulamanın içeriğini silmemiz gerekir. Aşağıdaki dosyayı ve aşağıdaki klasörü silmeniz gerekir:

  • Controllers\HomeController.cs
  • Görünümler\Giriş

Veritabanı Oluşturma

Film veritabanı kayıtlarımızı barındıracak bir veritabanı oluşturmamız gerekiyor. Neyse ki Visual Studio, SQL Server Express adlı ücretsiz bir veritabanı içerir. Veritabanını oluşturmak için şu adımları izleyin:

  1. Çözüm Gezgini penceresinde App_Data klasörüne sağ tıklayın ve Ekle, Yeni Öğe menü seçeneğini belirleyin.
  2. Veri kategorisini seçin ve SQL Server Veritabanı şablonunu seçin (bkz. Şekil 3).
  3. Yeni veritabanınıza MoviesDB.mdf adını verin ve Ekle düğmesine tıklayın.

Veritabanınızı oluşturduktan sonra, App_Data klasöründe bulunan MoviesDB.mdf dosyasına çift tıklayarak veritabanına bağlanabilirsiniz. MoviesDB.mdf dosyasına çift tıklanması Sunucu Gezgini penceresini açar.

Not

Sunucu Gezgini penceresi, Visual Web Developer söz konusu olduğunda Veritabanı Gezgini penceresi olarak adlandırılır.

Ad kutusuna SQL Server Veritabanı'nın seçildiğini ve Filmler DB nokta m d f girildiğini gösteren Yeni Öğe Ekle penceresinin ekran görüntüsü.

Şekil 03: Microsoft SQL Server Veritabanı Oluşturma (Tam boyutlu görüntüyü görüntülemek için tıklayın)

Ardından yeni bir veritabanı tablosu oluşturmamız gerekiyor. Sunucu Gezgini penceresinin içinden Tablolar klasörüne sağ tıklayın ve Yeni Tablo Ekle menü seçeneğini belirleyin. Bu menü seçeneğinin seçilmesi veritabanı tablosu tasarımcısını açar. Aşağıdaki veritabanı sütunlarını oluşturun:

Sütun Adı Veri Türü Null'lara İzin Ver
Id int Yanlış
Başlık Nvarchar(100) Yanlış
Yönetmen Nvarchar(100) Yanlış
DateReleased DateTime Yanlış

İlk sütun olan Kimlik sütunu iki özel özelliğe sahiptir. İlk olarak, Kimlik sütununu birincil anahtar sütunu olarak işaretlemeniz gerekir. Kimlik sütununu seçtikten sonra Birincil Anahtarı Ayarla düğmesine tıklayın (anahtara benzeyen simgedir). İkincisi, Kimlik sütununu Kimlik sütunu olarak işaretlemeniz gerekir. Sütun Özellikler penceresi, ekranı aşağı kaydırarak Kimlik Belirtimi bölümüne gelin ve genişletin. Is Identity özelliğini Evet değeriyle değiştirin. İşiniz bittiğinde tablo Şekil 4 gibi görünmelidir.

Tamamlanmış Filmler veritabanı tablosunu ve Is Identity özelliğinin Evet olarak ayarlandığını gösteren Microsoft Visual Studio'nun ekran görüntüsü.

Şekil 04: Filmler veritabanı tablosu (Tam boyutlu görüntüyü görüntülemek için tıklayın)

Son adım, yeni tabloyu kaydetmektir. Kaydet düğmesine (disket simgesi) tıklayın ve yeni tabloya Filmler adını verin.

Tabloyu oluşturmayı tamamladıktan sonra tabloya bazı film kayıtları ekleyin. Sunucu Gezgini penceresinde Filmler tablosuna sağ tıklayın ve Tablo Verilerini Göster menü seçeneğini belirleyin. Sık kullandığınız filmlerin listesini girin (bkz. Şekil 5).

Id, Title, Director ve yayın tarihi gibi film bilgilerini girmek için bir tablo gösteren Microsoft Visual Studio penceresinin ekran görüntüsü.

Şekil 05: Film kayıtlarını girme (Tam boyutlu görüntüyü görüntülemek için tıklayın)

Model Oluşturma

Bir sonraki adımda veritabanımızı temsil eden bir sınıf kümesi oluşturmamız gerekiyor. Bir veritabanı modeli oluşturmamız gerekiyor. Veritabanı modelimizin sınıflarını otomatik olarak oluşturmak için Microsoft Entity Framework'ün avantajlarından yararlanacağız.

Not

ASP.NET MVC çerçevesi Microsoft Entity Framework'e bağlı değildir. LINQ to SQL, Subsonic ve NHibernate gibi çeşitli Nesne İlişkisel Eşleme (OR/M) araçlarından yararlanarak veritabanı modeli sınıflarınızı oluşturabilirsiniz.

Varlık Veri Modeli Sihirbazı'nı başlatmak için şu adımları izleyin:

  1. Çözüm Gezgini penceresinde Modeller klasörüne sağ tıklayın ve Ekle, Yeni Öğe menü seçeneğini belirleyin.
  2. Veri kategorisini seçin ve ADO.NET Varlık Veri Modeli şablonunu seçin.
  3. Veri modelinize MoviesDBModel.edmx adını verin ve Ekle düğmesine tıklayın.

Ekle düğmesine tıkladıktan sonra Varlık Veri Modeli Sihirbazı görüntülenir (bkz. Şekil 6). Sihirbazı tamamlamak için şu adımları izleyin:

  1. Model İçeriğiNi Seçin adımında Veritabanından oluştur seçeneğini belirleyin.
  2. Veri Bağlantınızı Seçin adımında MoviesDB.mdf veri bağlantısını ve bağlantı ayarları için MoviesDBEntities adını kullanın. İleri düğmesine tıklayın.
  3. Veritabanı Nesnelerinizi Seçin adımında Tablolar düğümünü genişletin ve Filmler tablosunu seçin. MovieApp.Models ad alanını girin ve Son düğmesine tıklayın.

Veritabanından oluştur simgesinin seçili olduğunu gösteren Varlık Veri Modeli Sihirbazı kutusunun ekran görüntüsü.

Şekil 06: Varlık Veri Modeli Sihirbazı ile veritabanı modeli oluşturma (Tam boyutlu görüntüyü görüntülemek için tıklayın)

Varlık Veri Modeli Sihirbazı'nı tamamladıktan sonra Varlık Veri Modeli Tasarım Aracı açılır. Tasarım Aracı Filmler veritabanı tablosunu görüntülemelidir (bkz. Şekil 7).

Filmler veritabanı tablosunu gösteren Varlık Veri Modeli Tasarım Aracı ekran görüntüsü.

Şekil 07: Varlık Veri Modeli Tasarım Aracı (Tam boyutlu görüntüyü görüntülemek için tıklayın)

Devam etmeden önce bir değişiklik yapmalıyız. Varlık Verileri Sihirbazı, Filmler veritabanı tablosunu temsil eden Filmler adlı bir model sınıfı oluşturur. Belirli bir filmi temsil etmek için Filmler sınıfını kullanacağımızdan, sınıfın adını Filmler yerine Film olacak şekilde değiştirmemiz gerekir (çoğul yerine tekil).

Tasarımcı yüzeyinde sınıfın adına çift tıklayın ve sınıfın adını Filmler'den Film'e değiştirin. Bu değişikliği yaptıktan sonra, Movie sınıfını oluşturmak için Kaydet düğmesine (disketin simgesi) tıklayın.

ASP.NET MVC Denetleyicisi oluşturma

Sonraki adım, ASP.NET MVC denetleyicisini oluşturmaktır. Denetleyici, kullanıcının bir ASP.NET MVC uygulamasıyla nasıl etkileşime geçtiğini denetlemekle sorumludur.

Şu adımları izleyin:

  1. Çözüm Gezgini penceresinde Denetleyiciler klasörüne sağ tıklayın ve Ekle, Denetleyici menü seçeneğini belirleyin.
  2. Denetleyici Ekle iletişim kutusunda HomeController adını girin ve Oluştur, Güncelleştir ve Ayrıntılar senaryoları için eylem yöntemleri ekle etiketli onay kutusunu işaretleyin (bkz. Şekil 8).
  3. Yeni denetleyiciyi projenize eklemek için Ekle düğmesine tıklayın.

Bu adımları tamamladıktan sonra Listeleme 1'deki denetleyici oluşturulur. Dizin, Ayrıntılar, Oluştur ve Düzenle adlı yöntemleri içerdiğine dikkat edin. Aşağıdaki bölümlerde, bu yöntemlerin çalışmasını sağlamak için gerekli kodu ekleyeceğiz.

Giriş Denetleyicisi'nin girildiği ve eylem ekle kutusunun işaretli olduğu Denetleyici Ekle kutusunun ekran görüntüsü.

Şekil 08: Yeni bir ASP.NET MVC Denetleyicisi ekleme (Tam boyutlu görüntüyü görüntülemek için tıklayın)

Listeleme 1 – Controllers\HomeController.cs

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.Mvc;

using System.Web.Mvc.Ajax; 

namespace MovieApp.Controllers

{

    public class HomeController : Controller

    {

        //

        // GET: /Home/ 

        public ActionResult Index()

        {

            return View();

        } 

        //

        // GET: /Home/Details/5 

        public ActionResult Details(int id)

        {

            return View();

        } 

        //

        // GET: /Home/Create 

        public ActionResult Create()

        {

            return View();

        }  

        //

        // POST: /Home/Create 

        [AcceptVerbs(HttpVerbs.Post)]

        public ActionResult Create(FormCollection collection)

        {

            try

            {

                // TODO: Add insert logic here 

                return RedirectToAction("Index");

            }

            catch

            {

                return View();

            }

        } 

        //

        // GET: /Home/Edit/5

        public ActionResult Edit(int id)

        {

            return View();

        } 

        //

        // POST: /Home/Edit/5 

        [AcceptVerbs(HttpVerbs.Post)]

        public ActionResult Edit(int id, FormCollection collection)

        {

            try

            {

                // TODO: Add update logic here

                return RedirectToAction("Index");

            }

            catch

            {

                return View();

            }

        }

    }

}

Veritabanı Kayıtlarını Listeleme

Home denetleyicisinin Index() yöntemi, bir ASP.NET MVC uygulaması için varsayılan yöntemdir. bir ASP.NET MVC uygulaması çalıştırdığınızda, Index() yöntemi çağrılan ilk denetleyici yöntemidir.

Filmler veritabanı tablosundaki kayıtların listesini görüntülemek için Index() yöntemini kullanacağız. Index() yöntemiyle film veritabanı kayıtlarını almak için daha önce oluşturduğumuz veritabanı modeli sınıflarından yararlanacağız.

Liste 2'deki HomeController sınıfını, _db adlı yeni bir özel alan içermesi için değiştirdim. MoviesDBEntities sınıfı veritabanı modelimizi temsil eder ve veritabanımızla iletişim kurmak için bu sınıfı kullanacağız.

Liste 2'de Index() yöntemini de değiştirdim. Index() yöntemi, Filmler veritabanı tablosundaki tüm film kayıtlarını almak için MoviesDBEntities sınıfını kullanır. İfade _db. MovieSet.ToList() , Filmler veritabanı tablosundaki tüm film kayıtlarının listesini döndürür.

Film listesi görünüme geçirilir. View() yöntemine geçirilen her şey görünüme görünüm verileri olarak geçirilir.

Listeleme 2 – Controllers/HomeController.cs (index yöntemi değiştirildi)

using System.Linq;

using System.Web.Mvc;

using MovieApp.Models; 

namespace MovieApp.Controllers

{

    public class HomeController : Controller

    {

        private MoviesDBEntities _db = new MoviesDBEntities(); 

        public ActionResult Index()

        {

            return View(_db.MovieSet.ToList());

        }

    }

}

Index() yöntemi Index adlı bir görünüm döndürür. Film veritabanı kayıtlarının listesini görüntülemek için bu görünümü oluşturmamız gerekir. Şu adımları izleyin:

Görünüm Ekle iletişim kutusunu açmadan önce projenizi derlemelisiniz (Derle, Çözüm Derle'yi seçin), aksi takdirde Veri sınıfını görüntüle açılan listesinde hiçbir sınıf görüntülenmez.

  1. Kod düzenleyicisinde Index() yöntemine sağ tıklayın ve Görünüm Ekle menü seçeneğini belirleyin (bkz. Şekil 9).
  2. Görünüm Ekle iletişim kutusunda, Kesin olarak belirlenmiş bir görünüm oluştur etiketli onay kutusunun işaretli olduğunu doğrulayın.
  3. İçeriği görüntüle açılan listesinden Liste değerini seçin.
  4. Veri sınıfını görüntüle açılan listesinden MovieApp.Models.Movie değerini seçin.
  5. Yeni görünümü oluşturmak için Ekle düğmesine tıklayın (bkz. Şekil 10).

Bu adımları tamamladıktan sonra, Views\Home klasörüne Index.aspx adlı yeni bir görünüm eklenir. Dizin görünümünün içeriği Liste 3'e dahildir.

Görünüm Ekle'nin seçili olduğu sağ tıklama açılan kutusunu gösteren kod düzenleyicisinin ekran görüntüsü.

Şekil 09: Denetleyici eyleminden görünüm ekleme (Tam boyutlu görüntüyü görüntülemek için tıklayın)

Görünüm adını, Dizini gösteren ve Kesin olarak belirlenmiş bir görünüm oluştur ve Ana sayfa girdilerini seç'i gösteren Görünüm Ekle kutusunun ekran görüntüsü.

Şekil 10: Görünüm Ekle iletişim kutusuyla yeni görünüm oluşturma (Tam boyutlu görüntüyü görüntülemek için tıklayın)

Listeleme 3 – Views\Home\Index.aspx

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<IEnumerable<MovieApp.Models.Movie>>" %> 

    <asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">

       Index

    </asp:Content> 

    <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> 

        <h2>Index</h2> 

        <table>

            <tr>

                <th></th>

                <th>

                    Id

                </th>

                <th>

                    Title

                </th>

                <th>

                    Director

                </th>

                <th>

                    DateReleased

                </th>

            </tr> 

        <% foreach (var item in Model) { %>

            <tr>

                <td>

                    <%= Html.ActionLink("Edit", "Edit", new { id=item.Id }) %> |

                    <%= Html.ActionLink("Details", "Details", new { id=item.Id })%>

                </td>

                <td>

                    <%= Html.Encode(item.Id) %>

                </td>

                <td>

                    <%= Html.Encode(item.Title) %>

                </td>

                <td>

                    <%= Html.Encode(item.Director) %>

                </td>

                <td>

                    <%= Html.Encode(String.Format("{0:g}", item.DateReleased)) %>

                </td>

            </tr>

        <% } %> 

        </table> 

        <p>

            <%= Html.ActionLink("Create New", "Create") %>

        </p> 

    </asp:Content>

Dizin görünümü, bir HTML tablosunun içindeki Filmler veritabanı tablosundaki tüm film kayıtlarını görüntüler. Görünüm, ViewData.Model özelliğiyle temsil edilen her filmde yinelenen bir foreach döngüsü içerir. Uygulamanızı F5 tuşuna basarak çalıştırırsanız, Şekil 11'de web sayfasını görürsünüz.

Kimlik, başlık, yönetmen ve yayınlanma tarihi gibi film bilgilerini gösteren Dizin Görünümü'nü gösteren ekran görüntüsü.

Şekil 11: Dizin görünümü (Tam boyutlu görüntüyü görüntülemek için tıklayın)

Yeni Veritabanı Kayıtları Oluşturma

Önceki bölümde oluşturduğumuz Dizin görünümü, yeni veritabanı kayıtları oluşturmaya yönelik bir bağlantı içerir. Şimdi mantığı uygulayalım ve yeni film veritabanı kayıtları oluşturmak için gereken görünümü oluşturalım.

Giriş denetleyicisi Create() adlı iki yöntem içerir. İlk Create() yönteminin parametresi yoktur. Create() yönteminin bu aşırı yüklemesi, yeni bir film veritabanı kaydı oluşturmaya yönelik HTML formunu görüntülemek için kullanılır.

İkinci Create() yönteminin FormCollection parametresi vardır. Create() yönteminin bu aşırı yüklemesi, yeni film oluşturmaya yönelik HTML formu sunucuya gönderildiğinde çağrılır. Bu ikinci Create() yönteminin, HTTP POST işlemi gerçekleştirilmediği sürece yönteminin çağrılmasını engelleyen bir AcceptVerbs özniteliğine sahip olduğuna dikkat edin.

Bu ikinci Create() yöntemi, Listeleme 4'teki güncelleştirilmiş HomeController sınıfında değiştirilmiştir. Create() yönteminin yeni sürümü movie parametresini kabul eder ve Filmler veritabanı tablosuna yeni film ekleme mantığını içerir.

Not

Bind özniteliğine dikkat edin. Film Kimliği özelliğini HTML formundan güncelleştirmek istemediğimiz için bu özelliği açıkça dışlamamız gerekir.

Listeleme 4 – Controllers\HomeController.cs (create yöntemi değiştirildi)

//

// GET: /Home/Create 

public ActionResult Create()

{

    return View();

}  

//

// POST: /Home/Create 

[AcceptVerbs(HttpVerbs.Post)]

public ActionResult Create([Bind(Exclude="Id")] Movie movieToCreate)

{

     if (!ModelState.IsValid)

        return View(); 

    _db.AddToMovieSet(movieToCreate);

    _db.SaveChanges(); 

    return RedirectToAction("Index");

}

Visual Studio, yeni bir film veritabanı kaydı oluşturmak için form oluşturmayı kolaylaştırır (bkz. Şekil 12). Şu adımları izleyin:

  1. Kod düzenleyicisinde Create() yöntemine sağ tıklayın ve Görünüm Ekle menü seçeneğini belirleyin.
  2. Kesin olarak belirlenmiş bir görünüm oluştur etiketli onay kutusunun işaretli olduğunu doğrulayın.
  3. İçeriği görüntüle açılan listesinden Oluştur değerini seçin.
  4. Veri sınıfını görüntüle açılan listesinden MovieApp.Models.Movie değerini seçin.
  5. Yeni görünümü oluşturmak için Ekle düğmesine tıklayın.

Görünüm adı Olan Oluştur'un, Kesin olarak yazılan bir görünüm oluştur ve Ana sayfa girdilerini seç'in seçili olduğunu gösteren Görünüm Ekle kutusunun ekran görüntüsü.

Şekil 12: Oluştur görünümünü ekleme (Tam boyutlu görüntüyü görüntülemek için tıklayın)

Visual Studio, Liste 5'te görünümü otomatik olarak oluşturur. Bu görünüm, Movie sınıfının özelliklerine karşılık gelen alanları içeren bir HTML formu içerir.

Listeleme 5 – Views\Home\Create.aspx

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<MovieApp.Models.Movie>" %> 

    <asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">

       Create

    </asp:Content> 

    <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> 

        <h2>Create</h2> 

        <%= Html.ValidationSummary("Create was unsuccessful. Please correct the errors and try again.") %> 

        <% using (Html.BeginForm()) {%> 

            <fieldset>

                <legend>Fields</legend>

                <p>

                    <label for="Id">Id:</label>

                    <%= Html.TextBox("Id") %>

                    <%= Html.ValidationMessage("Id", "*") %>

                </p>

                <p>

                    <label for="Title">Title:</label>

                    <%= Html.TextBox("Title") %>

                    <%= Html.ValidationMessage("Title", "*") %>

                </p>

                <p>

                    <label for="Director">Director:</label>

                    <%= Html.TextBox("Director") %>

                    <%= Html.ValidationMessage("Director", "*") %>

                </p>

                <p>

                    <label for="DateReleased">DateReleased:</label>

                    <%= Html.TextBox("DateReleased") %>

                    <%= Html.ValidationMessage("DateReleased", "*") %>

                </p>

                <p>

                    <input type="submit" value="Create" />

                </p>

            </fieldset> 

        <% } %> 

        <div>

            <%=Html.ActionLink("Back to List", "Index") %>

        </div> 

    </asp:Content>

Not

Görünüm Ekle iletişim kutusu tarafından oluşturulan HTML formu bir Kimlik formu alanı oluşturur. Kimlik sütunu bir Kimlik sütunu olduğundan bu form alanına ihtiyacımız yoktur ve bunu güvenle kaldırabilirsiniz.

Oluştur görünümünü ekledikten sonra veritabanına yeni Film kayıtları ekleyebilirsiniz. F5 tuşuna basarak uygulamanızı çalıştırın ve Formu Şekil 13'te görmek için Yeni Oluştur bağlantısına tıklayın. Formu tamamlayıp gönderirseniz yeni bir film veritabanı kaydı oluşturulur.

Form doğrulamayı otomatik olarak edindiğinize dikkat edin. Bir film için yayın tarihi girmeyi ihmal ederseniz veya geçersiz bir yayın tarihi girerseniz, form yeniden görüntülenir ve yayın tarihi alanı vurgulanır.

Gerekli veritabanı başlık, yönetmen ve yayın tarihi alanlarını gösteren Görünüm oluştur sayfasını görüntüleyen tarayıcının ekran görüntüsü.

Şekil 13: Yeni bir film veritabanı kaydı oluşturma (Tam boyutlu görüntüyü görüntülemek için tıklayın)

Varolan Veritabanı Kayıtlarını Düzenleme

Önceki bölümlerde, yeni veritabanı kayıtlarını nasıl listeleyebileceğinizi ve oluşturabileceğinizi ele aldık. Bu son bölümde, mevcut veritabanı kayıtlarını nasıl düzenleyebileceğiniz açıklanmıştır.

İlk olarak Düzenleme formunu oluşturmamız gerekir. Visual Studio bizim için otomatik olarak Düzenleme formunu oluşturacağı için bu adım kolaydır. Visual Studio kod düzenleyicisinde HomeController.cs sınıfını açın ve şu adımları izleyin:

  1. Kod düzenleyicisinde Edit() yöntemine sağ tıklayın ve Görünüm Ekle menü seçeneğini belirleyin (bkz. Şekil 14).
  2. Kesin olarak belirlenmiş bir görünüm oluştur etiketli onay kutusunu işaretleyin.
  3. İçeriği görüntüle açılan listesinden Düzenle değerini seçin.
  4. Veri sınıfını görüntüle açılan listesinden MovieApp.Models.Movie değerini seçin.
  5. Yeni görünümü oluşturmak için Ekle düğmesine tıklayın.

Bu adımların tamamlanması, Views\Home klasörüne Edit.aspx adlı yeni bir görünüm ekler. Bu görünüm, film kaydını düzenlemek için bir HTML formu içerir.

Görünüm adı olan Düzenle için, Kesin olarak yazılan görünüm oluştur ve Ana sayfa girdilerini seç'i gösteren Görünüm Ekle kutusunun ekran görüntüsü.

Şekil 14: Düzenleme görünümünü ekleme (Tam boyutlu görüntüyü görüntülemek için tıklayın)

Not

Düzenleme görünümü, Film Kimliği özelliğine karşılık gelen bir HTML form alanı içerir. Kişilerin Id özelliğinin değerini düzenlemesini istemediğinizden, bu form alanını kaldırmalısınız.

Son olarak, Giriş denetleyicisini veritabanı kaydını düzenlemeyi destekleyecek şekilde değiştirmemiz gerekir. Güncelleştirilmiş HomeController sınıfı Listeleme 6'da yer alır.

Listeleme 6 – Controllers\HomeController.cs (Düzenleme yöntemleri)

//

// GET: /Home/Edit/5 

public ActionResult Edit(int id)

{

    var movieToEdit = (from m in _db.MovieSet

                       where m.Id == id

                       select m).First(); 

    return View(movieToEdit);

} 

//

// POST: /Home/Edit/5 

[AcceptVerbs(HttpVerbs.Post)]

public ActionResult Edit(Movie movieToEdit)

{ 

    var originalMovie = (from m in _db.MovieSet

                         where m.Id == movieToEdit.Id

                         select m).First(); 

    if (!ModelState.IsValid)

        return View(originalMovie);

        _db.ApplyPropertyChanges(originalMovie.EntityKey.EntitySetName, movieToEdit);

        _db.SaveChanges(); 

        return RedirectToAction("Index");

}

Liste 6'da Edit() yönteminin her iki aşırı yüklemesine de ek mantık ekledim. İlk Edit() yöntemi, yöntemine geçirilen Id parametresine karşılık gelen film veritabanı kaydını döndürür. İkinci aşırı yükleme, veritabanındaki bir film kaydına yönelik güncelleştirmeleri gerçekleştirir.

Özgün filmi almanız ve ardından veritabanındaki mevcut filmi güncelleştirmek için ApplyPropertyChanges() öğesini çağırmanız gerektiğine dikkat edin.

Özet

Bu öğreticinin amacı size ASP.NET MVC uygulaması oluşturma deneyimi hakkında fikir vermekti. Umarım bir ASP.NET MVC web uygulaması oluşturmanın Active Server Pages veya ASP.NET uygulaması oluşturma deneyimine çok benzer olduğunu keşfettiniz.

Bu öğreticide, ASP.NET MVC çerçevesinin yalnızca en temel özelliklerini inceledik. Gelecek öğreticilerde denetleyiciler, denetleyici eylemleri, görünümler, verileri görüntüleme ve HTML yardımcıları gibi konuları ayrıntılı olarak ele alayacağız.