Alıştırma - Projeyi özelleştirme
Takımınız pizza envanteri yönetim uygulaması için çalışmayı böldü. Ekip arkadaşlarınız sizin için ASP.NET Core web uygulamasını oluşturdular ve pizza verilerini okumak ve veritabanına yazmak için zaten bir hizmet oluşturdular. Pizza listesi sayfasında çalışmak üzere görevlendirildiniz. Bu sayfada pizzaların listesi görüntülenir ve veritabanına yeni pizzalar eklemenize olanak verilir. Projenin nasıl organize olduğunu anlamak için bir tura katılarak başlayacağız.
Not
Bu modülde yerel geliştirme için .NET CLI (Komut Satırı Arabirimi) ve Visual Studio Code kullanılır. Bu modülü tamamladıktan sonra Visual Studio (Windows) kullanarak kavramları veya Visual Studio Code (Windows, Linux ve macOS) kullanarak geliştirmeye devam edebilirsiniz.
Proje dosyalarını alma
GitHub Codespaces kullanıyorsanız depoyu tarayıcıda açın, Kod'u seçin ve dalda main yeni bir kod alanı oluşturun.
GitHub Codespaces kullanmıyorsanız proje dosyalarını alın ve aşağıdaki adımlarla Visual Studio Code'da açın:
Bir komut kabuğu açın ve komut satırını kullanarak GitHub'dan projeyi kopyalayın:
git clone https://github.com/MicrosoftDocs/mslearn-create-razor-pages-aspnet-coreDizine
mslearn-create-razor-pages-aspnet-coregidin ve projeyi Visual Studio Code'da açın:cd mslearn-create-razor-pages-aspnet-core code .
İpucu
Uyumlu bir kapsayıcı çalışma zamanı yüklüyse, depoyu önceden yüklenmiş araçlarla birlikte bir kapsayıcıda açmak için Dev Kapsayıcıları uzantısını kullanabilirsiniz.
Ekip arkadaşlarınızın çalışmalarını gözden geçirin
ContosoPizza klasöründeki mevcut kod hakkında bilgi edinmek için biraz zaman ayıralım. Proje, komutu kullanılarak dotnet new webapp oluşturulan bir ASP.NET Core web uygulamasıdır. Ekip arkadaşlarınızın yaptığı değişiklikler aşağıda açıklanmıştır.
İpucu
Bu değişiklikleri gözden geçirmek için çok fazla zaman harcamayın. Ekip arkadaşlarınız veritabanını ve pizzaları okumak ve veritabanına yazmak için hizmeti oluşturmak için zaten çalışmalar yaptı, ancak kullanıcı arabiriminde herhangi bir değişiklik yapmadılar. Sonraki ünitede hizmet kullanan bir kullanıcı arabirimi oluşturacaksınız.
- Projeye bir Models klasörü eklendi.
- Model klasörü pizzayı temsil eden bir
Pizzasınıf içerir.
- Model klasörü pizzayı temsil eden bir
- Projeye bir Veri klasörü eklendi.
- veri klasörü, veritabanı bağlamını temsil eden bir
PizzaContextsınıf içerir. Entity Framework Core'daki sınıfındanDbContextdevralınır. Entity Framework Core, veritabanlarıyla çalışmayı kolaylaştıran nesne ilişkisel eşleyicidir (ORM).
- veri klasörü, veritabanı bağlamını temsil eden bir
- Projeye bir Hizmetler klasörü eklendi.
- Services klasörü, pizzaları listelemek ve eklemek için yöntemleri kullanıma sunan bir
PizzaServicesınıf içerir. -
PizzaServicesınıfı, veritabanına pizza okumak ve yazmak için sınıfını kullanırPizzaContext. - sınıfı , Program.cs 'de bağımlılık ekleme için kaydedilir (10. satır).
- Services klasörü, pizzaları listelemek ve eklemek için yöntemleri kullanıma sunan bir
Entity Framework Core da birkaç şey oluşturdu:
- Migrations klasörü oluşturuldu.
- Migrations klasörü, veritabanı şemasını oluşturmak için kod içerir.
- SQLite veritabanı dosyası ContosoPizza.db oluşturuldu.
- SQLite uzantısı yüklüyse (veya GitHub Codespaces kullanıyorsanız), dosyaya sağ tıklayıp Veritabanını Aç'ı seçerek veritabanını görüntüleyebilirsiniz. Veritabanı şeması, Gezgin bölmesinin SQLite Gezgini sekmesinde gösterilir.
Razor Pages proje yapısını gözden geçirme
Projedeki diğer her şey, projenin oluşturulduğundan değişmemiştir. Aşağıdaki tabloda, komutu tarafından dotnet new webapp oluşturulan proje yapısı açıklanmaktadır.
| Veri Akışı Adı | Açıklama |
|---|---|
| Sayfa/ | Razor Pages ve destekleyici dosyaları içerir. Her Razor sayfasının bir .cshtml dosyası ve bir .cshtml.csPageModel sınıf dosyası vardır. |
| wwwroot/ | HTML, JavaScript ve CSS gibi statik varlık dosyalarını içerir. |
| ContosoPizza.csproj | Bağımlılıklar gibi proje yapılandırma meta verilerini içerir. |
| Program.cs | Uygulamanın giriş noktası olarak görev alır ve yönlendirme gibi uygulama davranışını yapılandırılır. |
Diğer dikkat çekici gözlemler:
Razor sayfa dosyaları ve bunların eşleştirilmiş
PageModelsınıf dosyasıRazor sayfaları Sayfalar dizininde depolanır. Yukarıda belirtildiği gibi, her Razor sayfasının bir .cshtml dosyası ve bir .cshtml.cs
PageModelsınıf dosyası vardır.PageModelsınıfı Razor sayfasının mantığının ve sunumunun ayrılmasına izin verir, istekler için sayfa işleyicilerini tanımlar ve razor sayfası kapsamındaki veri özelliklerini ve mantığı kapsüller.Sayfalar dizin yapısı ve yönlendirme istekleri
Razor Pages, yönlendirme istekleri için kural olarak Pages dizin yapısını kullanır. Aşağıdaki tabloda URL'lerin dosya adlarıyla nasıl eş olduğu gösterilmektedir:
URL Razor'a Eşle sayfası www.domain.comPages/Index.cshtml www.domain.com/IndexPages/Index.cshtml www.domain.com/PrivacyPages/Privacy.cshtml www.domain.com/ErrorPages/Error.cshtml Sayfalar dizinindeki alt klasörler Razor sayfalarını düzenlemek için kullanılır. Örneğin, Pages/Products dizini varsa URL'ler bu yapıyı yansıtır:
URL Razor'a Eşle sayfası www.domain.com/ProductsSayfalar/Ürünler/Index.cshtml www.domain.com/Products/IndexSayfalar/Ürünler/Index.cshtml www.domain.com/Products/CreateSayfalar/Ürünler/Create.cshtml Düzen ve diğer paylaşılan dosyalar
Birden çok sayfada paylaşılan birkaç dosya vardır. Bu dosyalar yaygın düzen öğelerini ve sayfa içeri aktarmalarını belirler. Aşağıdaki tabloda her dosyanın amacı açıklanmaktadır.
Dosya Açıklama _ViewImports.cshtml Birden çok sayfada kullanılan ad alanlarını ve sınıfları içeri aktarır. _ViewStart.cshtml Tüm Razor sayfaları için varsayılan düzeni belirtir. Pages/Shared/_Layout.cshtml Bu, dosya tarafından belirtilen düzendir _ViewStart.cshtml. Birden çok sayfada ortak düzen öğeleri uygular.Pages/Shared/_ValidationScriptsPartial.cshtml Tüm sayfalara doğrulama işlevi sağlar.
Projeyi ilk kez çalıştırma
Projeyi çalıştıralım, böylece projeyi çalışır durumda görebiliriz.
Gezgin'deContosoPizza klasörüne sağ tıklayın ve Tümleşik Terminalde Aç'ı seçin. Bu işlem, proje klasörü bağlamında bir terminal penceresi açar.
Terminal penceresinde aşağıdaki komutu girin:
dotnet watchŞu komut:
- Projeyi oluşturur.
- Uygulamayı başlatır.
- Dosya değişikliklerini izler ve bir değişiklik algıladığında uygulamayı yeniden başlatır.
IDE, uygulamayı bir tarayıcıda açmanızı ister. Tarayıcıda Aç'ı seçin.
İpucu
Terminal penceresinde URL'yi bularak da uygulamayı açabilirsiniz. Ctrl tuşunu basılı tutarak URL'ye tıklayarak tarayıcıda açın.
İşlenen giriş sayfasını IDE'de Pages/Index.cshtml ile karşılaştırın:
- Dosyadaki HTML, Razor Söz Dizimi ve C# kodunun birleşimini gözlemleyin.
- Razor Söz Dizimi karakterlerle
@gösterilir. - C# kodu bloklar içine
@{ }alınır. Dosyanın en üstündeki yönergeleri not alın: - yönergesi
@page, bu dosyanın bir Razor sayfası olduğunu belirtir. - yönergesi
@model, sayfanın model türünü belirtir (bu örnekte,IndexModelPages/Index.cshtml.cs içinde tanımlanmıştır).
- Razor Söz Dizimi karakterlerle
- C# kod bloğunu gözden geçirin.
- Kod, sözlük içindeki
TitleViewDataöğenin değerini "Giriş sayfası" olarak ayarlar. -
ViewDataSözlük, Razor sayfası ileIndexModelsınıfı arasında veri geçirmek için kullanılır. - Çalışma zamanında değeri,
Titlesayfanın<title>öğesini ayarlamak için kullanılır.
- Kod, sözlük içindeki
- Dosyadaki HTML, Razor Söz Dizimi ve C# kodunun birleşimini gözlemleyin.
Uygulamayı terminal penceresinde çalışır durumda bırakın. Bunu gelecek ünitelerde kullanacağız. Tarayıcı sekmesini çalışan Contoso Pizza uygulamasıyla da bırakın. Uygulamada değişiklik yaparsınız ve tarayıcı değişiklikleri görüntülemek için otomatik olarak yenilenir.
Giriş sayfasını özelleştirme
Pizza uygulamasıyla daha ilgili hale getirmek için giriş sayfasında birkaç değişiklik yapalım.
Pages/Index.cshtml dosyasında, C# kod bloğundaki kodu aşağıdaki kodla değiştirin:
ViewData["Title"] = "The Home for Pizza Lovers"; TimeSpan timeInBusiness = DateTime.Now - new DateTime(2018, 8, 14);Yukarıdaki kod:
- Sözlük içindeki
TitleViewDataöğenin değerini "Pizza Severlerin Evi" olarak ayarlar. - İşletmenin açılmasından bu yana geçen süreyi hesaplar.
- Sözlük içindeki
HTML'yi aşağıdaki gibi değiştirin:
<h1>öğesini aşağıdaki kodla değiştirin:<h1 class="display-4">Welcome to Contoso Pizza</h1><p>öğesini aşağıdaki kodla değiştirin:<p class="lead">The best pizza in town for @Convert.ToInt32(timeInBusiness.TotalDays) days!</p>
Yukarıdaki kod:
- Başlığı "Contoso Pizza'ya Hoş Geldiniz" olarak değiştirir.
- İşletme açıldıktan sonra geçen gün sayısını görüntüler.
- Karakter
@, HTML'den Razor Söz Dizimine geçmek için kullanılır. -
Convert.ToInt32yöntemi, değişkeninTotalDaystimeInBusinessözelliğini tamsayıya dönüştürmek için kullanılır. - sınıfı, ContosoPizza.csproj
Converttarafından otomatik olarak içeri aktarılan ad alanının bir parçasıdırSystem.<ImplicitUsings>
- Karakter
Dosyayı kaydedin. Değişikliklerin görüntülenmesi için uygulamanın yer alan tarayıcı sekmesi otomatik olarak yenilenir. GitHub Codespaces kullanıyorsanız dosya otomatik olarak kaydedilir, ancak tarayıcı sekmesini el ile yenilemeniz gerekir.
Önemli
Dosyanızı her kaydettiğinizde terminal penceresini dotnet watch yakından izleyin. Bazen kodunuz kaba bir düzenleme olarak adlandıran içeriği içerebilir. Bu, değiştirdiğiniz kodun uygulamayı yeniden başlatmadan yeniden derlenebileceği anlamına gelir. Uygulamayı yeniden başlatmanız istenirse (evet) veya y (her zaman) tuşlarına basın a . Terminal penceresinde Ctrl+C tuşlarına iki kez basarak uygulamayı istediğiniz zaman durdurabilir ve sonra yeniden çalıştırarak dotnet watch uygulamayı yeniden başlatabilirsiniz.
Razor sayfasında ilk değişikliklerinizi yaptınız! Sonraki ünitede, pizza listesini görüntülemek için uygulamaya yeni bir sayfa ekleyeceksiniz.