2. Bölüm: Denetleyiciler

Jon Galloway tarafından

MVC müzik deposu, Web geliştirme için ASP.NET MVC ve Visual Studio 'nun nasıl kullanılacağını anlatan bir öğretici uygulamadır.

MVC müzik deposu, çevrimiçi olarak müzik albümlerini satan ve temel site yönetimi, Kullanıcı oturum açma ve alışveriş sepeti işlevlerini uygulayan basit bir örnek depolama uygulamasıdır.

Bu öğretici serisi, ASP.NET MVC müzik deposu örnek uygulamasını oluşturmak için kullanılan adımların tümünü ayrıntılarıyla ayrıntılardır. 2. Bölüm denetleyicileri içerir.

Geleneksel Web çerçeveleri ile gelen URL 'Ler genellikle disk üzerindeki dosyalarla eşleştirilir. Ö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 koduna biraz farklı bir şekilde eşler. Gelen URL 'Leri dosyalara eşlemek yerine, URL 'Leri sınıfların yöntemlerine eşleyin. Bu sınıflar "denetleyiciler" olarak adlandırılır ve gelen HTTP isteklerini işlemekten, Kullanıcı girişi işleme, verileri alma ve kaydetme ve istemciye geri gönderme yanıtını belirleme (HTML görüntüleme, bir dosyayı indirme, farklı bir şekilde yeniden yönlendirme) URL, vb.).

HomeController ekleme

Sitemizin ana sayfasında URL 'Leri işleyecek bir denetleyici sınıfı ekleyerek MVC müzik deposu uygulamamıza başlayacağız. ASP.NET MVC 'nin varsayılan adlandırma kurallarını takip edeceğiz ve HomeController ' a çağrı yapacağız.

Çözüm Gezgini içindeki "denetleyiciler" klasörüne sağ tıklayın ve "Ekle" yi ve ardından "denetleyici..." öğesini seçin. komutundaki

Bu, "denetleyici Ekle" iletişim kutusunu getirir. 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();
        }
    }
}

Mümkün olduğunca basit bir şekilde başlamak için Dizin metodunu yalnızca bir dize döndüren basit bir yöntemle değiştirin. İki değişiklik yapacağız:

  • Yöntemi eylem sonucu yerine bir dize döndürecek şekilde değiştirin
  • Return ifadesini "from evden" döndürecek şekilde değiştirin

Yöntemi şu şekilde görünmelidir:

public string Index()
{
    return "Hello from Home";
}

Uygulamayı Çalıştırma

Şimdi siteyi çalıştıralım. Web-Server ' i başlatabiliriz ve aşağıdakilerden birini kullanarak siteyi deneyebiliriz::

  • Debug ⇨ start 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 Visual Web Developer 'ın yerleşik ASP.NET geliştirme sunucusunun başlatılmasına neden olur. ASP.NET Development Server 'ın başlatıldığını göstermek için ekranın alt köşesinde bir bildirim görünür ve altında çalıştığı bağlantı noktası numarasını gösterir.

Visual Web Developer, URL 'SI Web-Server ' ı işaret eden bir tarayıcı penceresini otomatik olarak açar. Bu, Web uygulamamızı hızlıca denememize olanak sağlayacak:

Neredeyse hızlı bir şekilde, yeni bir Web sitesi oluşturdunuz, üç satırlık bir işlev ekledik ve bir tarayıcıda metin aldık. Roket bilimi değil, ancak bir başlangıç.

Note: Visual Web Developer, Web sitenizi rastgele boş bir "bağlantı noktası" numarası üzerinde çalıştıracak ASP.NET geliştirme sunucusunu içerir. Yukarıdaki ekran görüntüsünde, site 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, URL 'ler gibi/Store/gözatım gibi bir iletişim kurduğumuz zaman, bağlantı noktası numarasından sonra da devam edecektir. 26641 numaralı bağlantı noktası,/Store/gözatma 'ya göz atarak http://localhost:26641/Store/Browsegöz atacaktır.

StoreController ekleme

Sitemizin ana sayfasını uygulayan basit bir HomeController ekledik. Şimdi, müzik mağazamız için göz atma işlevini uygulamak üzere kullanacağımız başka bir denetleyici ekleyelim. Mağaza denetleyicimiz üç senaryoyu destekleyecektir:

  • Müzik mağazamız içindeki müzik tarzlarımızın bir listeleme sayfası
  • Belirli bir tarz tüm müzik albümlerini listeleyen bir tarayıcı sayfası
  • Belirli bir müzik albümünden ilgili 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 Debug ⇨ Stop Debugging menü öğesini seçerek uygulamayı çalıştırmayı durdurun.

Şimdi yeni bir StoreController ekleyin. HomeController ile yaptığımız gibi, bunu, Çözüm Gezgini içinde "denetleyiciler" klasörüne sağ tıklayıp, Add->Controller menü öğesini seçerek yapacağız.

Yeni StoreController bir "Dizin" metoduna zaten sahip. Bu "Dizin" yöntemini, müzik Deponuzdaki tüm tarzları listeleyen listeleme sayfamızı uygulamak için kullanacağız. Ayrıca, StoreController 'ın işlemesini istediğimiz iki senaryoyu uygulamak için iki ek yöntem de ekleyeceğiz: tarama ve ayrıntılar.

Denetleyicimiz içindeki bu yöntemlere (Dizin, gözatmayı ve ayrıntıları) "denetleyici eylemleri" adı verilir ve HomeController. Index () eylem yöntemiyle zaten gördüğünüz gibi, işleri URL isteklerine yanıt verebiliyor ve (genel olarak konuşulur) hangi içeriğin olduğunu belirleme URL 'YI çağıran tarayıcıya veya kullanıcıya geri gönderilmelidir.

Dizin () yöntemini "Hello. Index ()" dizesini döndürecek şekilde değiştirerek StoreController uygulamamıza başlayacağız ve gözatıp () ve ayrıntılar () 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özatamazsınız:

  • /Store
  • /Store/zat
  • /Store/Details

Bu URL 'Lere erişim, denetleyicimiz içindeki eylem yöntemlerini çağırır ve dize yanıtlarını döndürür:

Bu harika, ancak bunlar yalnızca sabit dizelerdir. Böylece, URL 'den bilgi alıp sayfa çıktısında görüntülenecek şekilde dinamik hale olalım.

İlk olarak, URL 'den bir QueryString değeri almak için, gezinme eylemi yöntemini değiştireceksiniz. Bunu, eylem yönteimize bir "tarz" parametresi ekleyerek yapabiliriz. Bu ASP.NET MVC, çağrıldığında otomatik olarak herhangi bir QueryString veya "tarz" adlı form gönderme parametrelerini eylem yönteimize iletir.

//
// GET: /Store/Browse?genre=Disco
public string Browse(string genre)
 {
    string message = HttpUtility.HtmlEncode("Store.Browse, Genre = "
+ genre);
 
    return message;
 }

Note: Kullanıcı girişini silmek için HttpUtility. HtmlEncode yardımcı programı yöntemini kullanıyoruz. Bu, kullanıcıların JavaScript 'i/Store/gözatmaya benzer bir bağlantıyla ekleme değiştirmesini engeller. Tarz =<betiği>Window. Location = 'http://hackersite.com'</SCRIPT>.

Şimdi/Store/gözatmaya gözatmaya izin veriyor musunuz? Tarz = disco

Daha sonra Ayrıntılar eylemini, ID adlı bir giriş parametresi okumak ve görüntülenecek şekilde değiştirelim. Önceki yönteminizin aksine ID değerini bir QueryString parametresi olarak gömeceğiz. Bunun yerine, bunu doğrudan URL 'nin içine ekleyeceğiz. Örneğin:/Store/Details/5.

ASP.NET MVC bunu, herhangi bir şeyi yapılandırmak zorunda kalmadan kolayca yapabilmenizi sağlar. ASP.NET MVC 'nin varsayılan yönlendirme kuralı, eylem yöntemi adından sonra bir URL 'nin segmentini "ID" adlı bir parametre olarak değerlendirmek için kullanılır. Eylem yönteminizin ID adlı bir parametresi varsa ASP.NET MVC, URL segmentini otomatik olarak bir parametre olarak size iletir.

//
// 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:

Şimdiye kadar yaptığımız şeyleri de en üst sınıra bakalım:

  • Visual Web Developer 'da yeni bir ASP.NET MVC projesi oluşturduk
  • Bir ASP.NET MVC uygulamasının temel klasör yapısını tartıştık.
  • ASP.NET geliştirme sunucusunu kullanarak Web sitemizi nasıl çalıştıracağınızı öğrendiniz
  • İki denetleyici sınıfı oluşturduk: bir HomeController ve StoreController
  • URL isteklerine yanıt veren ve tarayıcıya metin döndüren denetleyicilerimize eylem yöntemleri ekledik