Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
tarafından Rick Anderson
Not
Visual Studio'nun en son sürümünü kullanarak bu öğreticinin güncelleştirilmiş bir sürümüne buradan ulaşabilirsiniz. Yeni öğreticide, bu öğreticide birçok geliştirme sağlayan ASP.NET Core MVC kullanılır.
Bu öğreticide, denetleyiciler ve görünümlerle ASP.NET Core MVC öğretildi. Razor Pages, web kullanıcı arabirimi oluşturmayı daha kolay ve daha üretken hale getiren sayfa tabanlı bir programlama modeli olan ASP.NET Core'de yeni bir alternatiftir. Razor Pages öğreticisini MVC sürümünden önce denemenizi öneririz. Razor Pages öğreticisi:
- Takip etmek daha kolaydır.
- Daha fazla özelliği kapsar.
- Yeni uygulama geliştirme için tercih edilen yaklaşımdır.
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.
Sonraki adıma geçmeden önce uygulamayı derleyin. Uygulamayı oluşturmazsanız denetleyici eklerken hata alırsınız.
Çözüm Gezgini'da Denetleyiciler klasörüne sağ tıklayın ve ardından Ekle'ye ve ardından Denetleyici'ye tıklayın.
yapı iskelesi ekle iletişim kutusunda, Entity Framework kullanarak görünümler içeren MVC 5 Denetleyicisi'ne tıklayın ve ardından Ekle'ye tıklayın.
Model sınıfı için Movie (MvcMovie.Models) öğesini seçin.
Veri bağlam sınıfı için MovieDBContext (MvcMovie.Models) öğesini seçin.
Denetleyici adı için MoviesController yazın.
Aşağıdaki resimde tamamlanmış iletişim kutusu gösterilmektedir.
Ekle'ye tıklayın. (Hata alırsanız, büyük olasılıkla denetleyiciyi eklemeye başlamadan önce uygulamayı derlememişsinizdir.) Visual Studio aşağıdaki dosya ve klasörleri oluşturur:
- Denetleyiciler klasöründe bir MoviesController.cs dosyası.
- Görünümler\Filmler klasörü.
- Yeni Views\Movies klasöründe Create.cshtml, Delete.cshtml, Details.cshtml, Edit.cshtml ve Index.cshtml.
Visual Studio sizin için CRUD (oluşturma, okuma, güncelleştirme ve silme) eylem yöntemlerini ve görünümlerini otomatik olarak oluşturmuştur (CRUD eylem yöntemlerinin ve görünümlerinin otomatik olarak oluşturulması yapı iskelesi olarak bilinir). 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 MVC Film bağlantısına tıklayın (veya tarayıcınızın Movies adres çubuğundaki URL'ye /Movies ekleyerek denetleyiciye göz atın). Uygulama varsayılan yönlendirmeye bağlı olduğundan ( App_Start\RouteConfig.cs 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/Indexile 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.
Not
Fiyat alanına ondalık ayırıcı veya virgül giremeyebilirsiniz. Ondalık ayırıcı için virgül (",") ve US-English olmayan tarih biçimleri kullanan İngilizce olmayan yerel ayarlarda jQuery doğrulamasını desteklemek için, kullanmak Globalize.parseFloatüzere globalize.js ve belirli kültürlerinizi/globalize.cultures.js dosyanızı('dan https://github.com/jquery/globalize ) ve JavaScript'i eklemeniz gerekir. Bunun nasıl yapılacağını bir sonraki öğreticide göstereceğim. Şimdilik 10 gibi tamsayılar girmeniz yeter.
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 ActionResult Index()
{
return View(db.Movies.ToList());
}
Denetleyiciye yönelik Movies istek, tablodaki Movies tüm girişleri döndürür ve sonuçları görünüme Index geçirir. 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();
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.
MVC, kesin olarak yazılan nesneleri bir görünüm şablonuna geçirme olanağı da sağlar. Kesin olarak yazılan bu yaklaşım, Visual Studio düzenleyicisinde kodunuzun daha iyi derlenmesine ve daha zengin IntelliSense'e olanak tanır. Visual Studio'daki yapı iskelesi mekanizması, yöntem ve görünümleri oluştururken sınıf ve görünüm şablonlarıyla MoviesController bu yaklaşımı (kesin olarak belirlenmiş bir modeli geçirme) kullandı.
Controllers\MoviesController.cs dosyasında oluşturulan Details yöntemi inceleyin.
Details yöntemi aşağıda gösterilmiştir.
public ActionResult Details(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Movie movie = db.Movies.Find(id);
if (movie == null)
{
return HttpNotFound();
}
return View(movie);
}
id parametresi genellikle yol verileri olarak geçirilir, örneğin http://localhost:1234/movies/details/1 denetleyiciyi film denetleyicisine, eylemi ve 1'e detailsid ayarlar. Kimliği aşağıdaki gibi bir sorgu dizesiyle de geçirebilirsiniz:
http://localhost:1234/movies/details?id=1
Movie bulunursa, modelin Movie bir örneği görünüme Details geçirilir:
return View(movie);
Views\Movies\Details.cshtml dosyasının içeriğini inceleyin:
@model MvcMovie.Models.Movie
@{
ViewBag.Title = "Details";
}
<h2>Details</h2>
<div>
<h4>Movie</h4>
<hr />
<dl class="dl-horizontal">
<dt>
@Html.DisplayNameFor(model => model.Title)
</dt>
@*Markup omitted for clarity.*@
</dl>
</div>
<p>
@Html.ActionLink("Edit", "Edit", new { id = Model.ID }) |
@Html.ActionLink("Back to List", "Index")
</p>
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 Studio, Details.cshtml dosyasının en üstüne otomatik olarak aşağıdaki @model deyimi ekler:
@model MvcMovie.Models.Movie
Bu @model yönerge, kesin olarak yazılan bir Model nesne kullanarak denetleyicinin görünüme geçirdiği filme erişmenizi sağlar. Örneğin, Details.cshtml şablonunda kod, her film alanını DisplayNameFor kesin olarak yazılan Model nesneyle ve DisplayFor HTML Yardımcıları'na geçirir. ve CreateEdit yöntemleri ve görünüm şablonları da bir film modeli nesnesi geçirir.
Index.cshtml görünüm şablonunu ve IndexMoviesController.cs dosyasındaki yöntemini inceleyin. 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 eylem yönteminden Index görünüme geçirir:
public ActionResult Index()
{
return View(db.Movies.ToList());
}
Film denetleyicisini oluşturduğunuzda, Visual Studio 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>
<th>
@Html.DisplayFor(modelItem => item.Rating)
</th>
<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 Movieyazılır. Bu, kod düzenleyicisinde kodun derleme zamanı denetimini ve tam IntelliSense desteğini elde ettiğiniz anlamına gelir:
SQL Server Yerel Veritabanı 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.mdf 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.
SERVER EXPLORER'ı açmak için Movies.mdf'ye çift tıklayın, ardından Filmler tablosunu görmek için Tablolar klasörünü genişletin. Kimlik'in yanındaki tuş simgesine dikkat edin. Varsayılan olarak, EF id adlı bir özelliği birincil anahtar yapar. EF ve MVC hakkında daha fazla bilgi için bkz. Tom Dykstra'nın MVC ve EF ile ilgili mükemmel öğreticisi.
Oluşturduğunuz verileri görmek için tabloya Movies sağ tıklayın ve Tablo Verilerini Göster'i seçin.
Entity Framework Code'un Movies sizin için oluşturduğu tablo yapısını görmek için tabloya sağ tıklayın ve Tablo Tanımını Aç'ı 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ıza Movie göre sizin için otomatik olarak oluşturmuştur.
İşiniz bittiğinde MovieDBContext öğesine sağ tıklayıp Bağlantıyı Kapat'ı seçerek bağlantıyı kapatın. (Bağlantıyı kapatmıyorsanız, projeyi bir sonraki çalıştırışınızda hata alabilirsiniz).
Artık verileri görüntülemek, düzenlemek, güncelleştirmek ve silmek için bir veritabanınız ve sayfalarınız var. Sonraki öğreticide, iskelesi oluşturulmuş kodun geri kalanını inceleyecek ve bu veritabanında film aramanızı sağlayan bir SearchIndexSearchIndex yöntem ve görünüm ekleyeceğiz. MVC ile Entity Framework kullanma hakkında daha fazla bilgi için bkz. ASP.NET MVC Uygulaması için Entity Framework Veri Modeli Oluşturma.