Bölüm 2: Denetleyiciler
tarafından Jon Galloway
MVC Müzik Deposu, web geliştirme için ASP.NET MVC ve Visual Studio'yu kullanmayı adım adım tanıtır ve açıklar.
MVC Music Store, müzik albümlerini çevrimiçi olarak satan ve temel site yönetimi, kullanıcı oturum açma ve alışveriş sepeti işlevlerini uygulayan basit bir örnek mağaza uygulamasıdır.
Bu öğretici serisi, ASP.NET MVC Müzik Deposu örnek uygulamasını derlemek için atılan tüm adımların ayrıntılarını içerir. Bölüm 2, Denetleyiciler'i kapsar.
Geleneksel web çerçevelerinde, gelen URL'ler genellikle diskteki dosyalarla eşlenir. Örneğin: "/Products.aspx" veya "/Products.php" gibi bir URL isteği bir "Products.aspx" veya "Products.php" dosyası tarafından işlenebilir.
Web tabanlı MVC çerçeveleri, URL'leri sunucu koduyla biraz farklı bir şekilde eşler. Gelen URL'leri dosyalara eşlemek yerine URL'leri sınıflardaki yöntemlerle eşler. Bu sınıflar "Denetleyiciler" olarak adlandırılır ve gelen HTTP isteklerini işleme, kullanıcı girişini işleme, verileri alma ve kaydetme ve istemciye geri gönderme yanıtını belirleme (HTML görüntüleme, dosya indirme, farklı bir URL'ye yeniden yönlendirme vb.) sorumludur.
HomeController Ekleme
MVC Music Store uygulamamıza, sitemizin Giriş sayfasına URL'leri işleyecek bir Controller sınıfı ekleyerek başlayacağız. ASP.NET MVC'nin varsayılan adlandırma kurallarına uyup Buna HomeController adını vereceğiz.
Çözüm Gezgini içindeki "Denetleyiciler" klasörüne sağ tıklayın ve "Ekle"yi ve ardından "Denetleyici..." öğesini seçin. Komut:
Bu, "Denetleyici Ekle" iletişim kutusunu açar. Denetleyiciyi "HomeController" olarak adlandırın ve Ekle düğmesine basın.
Bu, aşağıdaki kodla yeni bir HomeController.cs dosyası oluşturur:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace MvcMusicStore.Controllers
{
public class HomeController : Controller
{
//
// GET: /Home/
public ActionResult Index()
{
return View();
}
}
}
Olabildiğince basit bir başlangıç yapmak için Index yöntemini yalnızca bir dize döndüren basit bir yöntemle değiştirelim. İki değişiklik yapacağız:
- ActionResult yerine dize döndürmek için yöntemini değiştirme
- Return deyimini "Girişten Merhaba" döndürecek şekilde değiştirin
Yöntemi şimdi şöyle görünmelidir:
public string Index()
{
return "Hello from Home";
}
Uygulamayı Çalıştırma
Şimdi siteyi çalıştıralım. Web sunucumuzu başlatabilir ve aşağıdakilerden birini kullanarak siteyi deneyebiliriz:
- Hata Ayıkla ⇨ Hata Ayıklamayı Başlat menü öğesini seçin
- Araç çubuğundaKi Yeşil ok düğmesine tıklayın
- F5 klavye kısayolunu kullanın.
Yukarıdaki adımlardan herhangi birini kullanmak projemizi derler ve ardından Visual Web Developer'da yerleşik olarak bulunan ASP.NET Geliştirme Sunucusu'nun başlatılmasına neden olur. Ekranın alt köşesinde ASP.NET Geliştirme Sunucusu'nun başlatıldığını belirten bir bildirim görüntülenir ve altında çalıştığı bağlantı noktası numarasını gösterir.
Ardından Visual Web Developer, URL'si web sunucumuza işaret eden bir tarayıcı penceresini otomatik olarak açar. Bu, web uygulamamızı hızlı bir şekilde denememize olanak sağlar:
Tamam, bu oldukça hızlıydı - yeni bir web sitesi oluşturduk, üç satırlık bir işlev ekledik ve bir tarayıcıda metin aldık. Uzay mekik bilimi değil, ama bu bir başlangıç.
Not: Visual Web Developer, web sitenizi rastgele bir ücretsiz "bağlantı noktası" numarası üzerinde çalıştıracak olan ASP.NET Geliştirme Sunucusu'nu içerir. Yukarıdaki ekran görüntüsünde, site konumunda http://localhost:26641/
çalışıyor, bu nedenle 26641 numaralı bağlantı noktasını kullanıyor. Bağlantı noktası numaranız farklı olacaktır. Bu öğreticide /Store/Browse gibi URL'ler hakkında konuştuğumuzda, bağlantı noktası numarasından sonra gider. 26641 numaralı bir bağlantı noktası varsayarsak, /Store/Browse'a göz atmak adresine göz atmak http://localhost:26641/Store/Browse
anlamına gelir.
StoreController Ekleme
Sitemizin Giriş Sayfasını uygulayan basit bir HomeController ekledik. Şimdi müzik mağazamızın göz atma işlevselliğini uygulamak için kullanacağımız başka bir denetleyici ekleyelim. Mağaza denetleyicimiz üç senaryoya destek olacaktır:
- Müzik mağazamızda müzik türlerinin liste sayfası
- Belirli bir türdeki tüm müzik albümlerini listeleyen bir göz atma sayfası
- Belirli bir müzik albümü hakkındaki bilgileri gösteren ayrıntılar sayfası
Yeni bir StoreController sınıfı ekleyerek başlayacağız.. Henüz yapmadıysanız, tarayıcıyı kapatarak veya Hata Ayıkla ⇨ Hata Ayıklamayı Durdur menü öğesini seçerek uygulamayı çalıştırmayı durdurun.
Şimdi yeni bir StoreController ekleyin. HomeController'da yaptığımız gibi, bunu da Çözüm Gezgini içindeki "Denetleyiciler" klasörüne sağ tıklayıp Denetleyici Ekle> menü öğesini seçerek yapacağız
Yeni StoreController'ımızın zaten bir "Index" yöntemi var. Müzik mağazamızdaki tüm türleri listeleyen listeleme sayfamızı uygulamak için bu "Index" yöntemini kullanacağız. Ayrıca StoreController'ımızın işlemesini istediğimiz diğer iki senaryoyu uygulamak için iki yöntem daha ekleyeceğiz: Gözat ve Ayrıntılar.
Denetleyicimiz içindeki bu yöntemler (Dizin, Gözatma ve Ayrıntılar) "Denetleyici Eylemleri" olarak adlandırılır ve HomeController.Index()eylem yönteminde gördüğünüz gibi, görevleri URL isteklerine yanıt vermek ve (genel olarak konuşmak) URL'yi çağıran tarayıcıya veya kullanıcıya hangi içeriğin geri gönderilmesi gerektiğini belirlemektir.
StoreController uygulamamızı başlatmak içinIndex() yöntemini değiştirerek "Hello from Store.Index()" dizesini döndüreceğiz ve Browse() ve Details() için benzer yöntemler ekleyeceğiz:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace MvcMusicStore.Controllers
{
public class StoreController : Controller
{
//
// GET: /Store/
public string Index()
{
return "Hello from Store.Index()";
}
//
// GET: /Store/Browse
public string Browse()
{
return "Hello from Store.Browse()";
}
//
// GET: /Store/Details
public string Details()
{
return "Hello from Store.Details()";
}
}
}
Projeyi yeniden çalıştırın ve aşağıdaki URL'lere göz atın:
- /Mağazası
- /Store/Gözat
- /Store/Details
Bu URL'lere erişirken Denetleyicimiz içindeki eylem yöntemleri çağrılır ve dize yanıtları döndürülür:
Bu harika, ancak bunlar yalnızca sabit dizelerdir. Url'den bilgi alıp sayfa çıkışında görüntüleyebilmeleri için bunları dinamik hale getirelim.
İlk olarak, URL'den bir querystring değeri almak için Gözat eylem yöntemini değiştireceğiz. Bunu eylem yöntemimize bir "tarz" parametresi ekleyerek yapabiliriz. Bunu yaptığımızda ASP.NET MVC çağrıldığında eylem yöntemimize "genre" adlı tüm sorgu dizelerini veya form post parametrelerini otomatik olarak geçirir.
//
// GET: /Store/Browse?genre=Disco
public string Browse(string genre)
{
string message = HttpUtility.HtmlEncode("Store.Browse, Genre = "
+ genre);
return message;
}
Not: Kullanıcı girişini temizleme amacıyla HttpUtility.HtmlEncode yardımcı programı yöntemini kullanıyoruz. Bu, kullanıcıların /Store/Browse gibi bir bağlantıyla Görünümümüze Javascript eklemesini engeller. Genre=<script>window.location='http://hackersite.com'</script>.
Şimdi /Store/Browse konumuna göz atalım. Tarz=Disko
Şimdi Ayrıntılar eylemini id adlı bir giriş parametresini okuyacak ve görüntüleyecek şekilde değiştirelim. Önceki yöntemimizden farklı olarak, kimlik değerini querystring parametresi olarak eklemeyeceğiz. Bunun yerine doğrudan URL'nin içine ekleyeceğiz. Örneğin: /Store/Details/5.
ASP.NET MVC, herhangi bir şey yapılandırmak zorunda kalmadan bunu kolayca yapmamıza olanak tanır. ASP.NET MVC'nin varsayılan yönlendirme kuralı, eylem yöntemi adından sonraki URL segmentini "ID" adlı bir parametre olarak işlemektir. Eylem yönteminizde ID adlı bir parametre varsa ASP.NET MVC, URL kesimini size otomatik olarak parametre olarak geçirir.
//
// GET: /Store/Details/5
public string Details(int id)
{
string message = "Store.Details, ID = " + id;
return message;
}
Uygulamayı çalıştırın ve /Store/Details/5 adresine gidin:
Şu ana kadar yaptıklarımızı özetleyelim:
- Visual Web Developer'da yeni bir ASP.NET MVC projesi oluşturduk
- ASP.NET MVC uygulamasının temel klasör yapısını ele aldık
- ASP.NET Geliştirme Sunucusu'nu kullanarak web sitemizi çalıştırmayı öğrendik
- İki Denetleyici sınıfı oluşturduk: HomeController ve StoreController
- Denetleyicilerimize URL isteklerine yanıt veren ve tarayıcıya metin döndüren Eylem Yöntemleri ekledik
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