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
Uyarı
Visual Studio'nun en son sürümü kullanılarak bu öğreticinin güncelleştirilmiş bir sürümü burada kullanılabilir. Yeni öğretici, ASP.NET Core MVC kullanarak, bu öğreticiye göre birçok geliştirme sunmaktadır.
Bu öğretici, denetleyiciler ve görünümlerle ASP.NET Core MVC'yi öğretir. Razor Pages, web kullanıcı arabirimi oluşturmayı kolaylaştıran ve daha üretken hale getiren sayfa tabanlı bir programlama modeli olan ASP.NET Core'daki 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.
MVC, model-görünüm denetleyicisi anlamına gelir. MVC, iyi tasarlanmış, test edilebilir ve bakımı kolay uygulamalar geliştirmeye yönelik bir desendir. MVC tabanlı uygulamalar:
- M odels: Uygulamanın verilerini temsil eden ve bu veriler için iş kurallarını zorunlu kılmak için doğrulama mantığı kullanan sınıflar.
- V iews: Uygulamanızın DINAMIK OLARAK HTML yanıtları oluşturmak için kullandığı şablon dosyaları.
- C ontrollers: Gelen tarayıcı isteklerini işleyen, model verilerini alan ve ardından tarayıcıya yanıt döndüren görünüm şablonlarını belirten sınıflar.
Bu öğretici serisindeki tüm bu kavramları kapsayan bir uygulama oluşturmak için bunları nasıl kullanacağınızı göstereceğiz.
Bir denetleyici sınıfı oluşturarak başlayalım. Çözüm Gezgini'ndeDenetleyiciler klasörüne sağ tıklayın ve ekle'ye ve ardından Denetleyici'ye tıklayın.
Yapı İskelesi Ekle iletişim kutusunda, MVC 5 Denetleyici - Boş'a ve ardından Ekle'ye tıklayın.
Yeni denetleyicinize "HelloWorldController" adını verin ve Ekle'ye tıklayın.
Çözüm Gezgini'ndeHelloWorldController.cs adlı yeni bir dosya ve Views\HelloWorld adlı yeni bir klasör oluşturulduğuna dikkat edin. Denetleyici IDE'de açık.
Dosyanın içeriğini aşağıdaki kodla değiştirin.
using System.Web;
using System.Web.Mvc;
namespace MvcMovie.Controllers
{
public class HelloWorldController : Controller
{
//
// GET: /HelloWorld/
public string Index()
{
return "This is my <b>default</b> action...";
}
//
// GET: /HelloWorld/Welcome/
public string Welcome()
{
return "This is the Welcome action method...";
}
}
}
Denetleyici yöntemleri örnek olarak bir HTML dizesi döndürür. Denetleyici adlandırılır HelloWorldController ve ilk yöntem olarak adlandırılır Index. Şimdi tarayıcıdan çağıralım. Uygulamayı çalıştırın (F5 veya Ctrl+F5 tuşlarına basın). Tarayıcıda, adres çubuğundaki yola "HelloWorld" ekleyin. (Örneğin, aşağıdaki çizimde verilmiştir http://localhost:1234/HelloWorld.) Tarayıcıdaki sayfa aşağıdaki ekran görüntüsüne benzer. Yukarıdaki yöntemde kod doğrudan bir dize döndürdü. Sisteme yalnızca HTML döndürmesini söylediniz ve sistem bunu yaptı!
ASP.NET MVC, gelen URL'ye bağlı olarak farklı denetleyici sınıflarını (ve bunların içinde farklı eylem yöntemlerini) çağırır. ASP.NET MVC tarafından kullanılan varsayılan URL yönlendirme mantığı, hangi kodun çağrıldığını belirlemek için aşağıdakine benzer bir biçim kullanır:
/[Controller]/[ActionName]/[Parameters]
yönlendirme biçimini App_Start/RouteConfig.cs dosyasında ayarlarsınız.
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
Uygulamayı çalıştırdığınızda ve herhangi bir URL kesimi sağlamadığınızda, varsayılan olarak yukarıdaki kodun varsayılanlar bölümünde belirtilen "Giriş" denetleyicisi ve "Dizin" eylem yöntemi kullanılır.
URL'nin ilk bölümü yürütülecek denetleyici sınıfını belirler. Böylece /HelloWorld, HelloWorldController sınıfına eşlenir. URL'nin ikinci bölümü, yürütülecek sınıftaki eylem yöntemini belirler. Bu nedenle /HelloWorld/IndexHelloWorldController sınıfının Index yönteminin yürütülmesine neden olur. Yalnızca /HelloWorld'e göz atmak zorunda kaldığımıza ve yöntemin varsayılan olarak kullanıldığına Index dikkat edin. Bunun nedeni, adlandırılmış Index bir yöntemin açıkça belirtilmemişse denetleyicide çağrılan varsayılan yöntem olmasıdır. URL kesiminin ( Parameters) üçüncü bölümü yol verileri içindir. Yönlendirme verilerini bu kılavuzun ileriki kısımlarında göreceğiz.
http://localhost:xxxx/HelloWorld/Welcome adresine göz atın.
Welcome yöntemi çalışır ve "Bu Hoş Geldiniz eylem yöntemidir..." dizesini döndürür. Varsayılan MVC eşlemesi şeklindedir /[Controller]/[ActionName]/[Parameters]. Bu URL için denetleyici HelloWorld ve eylem yöntemi Welcome'dir. Henüz URL'nin [Parameters] bölümünü kullanmadınız.
Url'den denetleyiciye bazı parametre bilgilerini geçirebilmeniz için örneği biraz değiştirelim (örneğin, /HelloWorld/Welcome?name=Scott&numtimes=4). Yönteminizi Welcome aşağıda gösterildiği gibi iki parametre içerecek şekilde değiştirin. Kodda, parametre için hiçbir değer geçirilmemesi durumunda parametrenin numTimes varsayılan olarak 1 olması gerektiğini belirtmek için C# isteğe bağlı-parametre özelliğinin kullanıldığına dikkat edin.
public string Welcome(string name, int numTimes = 1) {
return HttpUtility.HtmlEncode("Hello " + name + ", NumTimes is: " + numTimes);
}
Uyarı
Güvenlik Notu: Yukarıdaki kod, uygulamayı kötü amaçlı girişlerden (JavaScript) korumak için HttpUtility.HtmlEncode kullanır. Daha fazla bilgi için bkz: Bir Web Uygulamasında Betik İhlallerine Karşı HTML Kodlamasıyla Koruma.
Uygulamanızı çalıştırın ve örnek URL'ye (http://localhost:xxxx/HelloWorld/Welcome?name=Scott&numtimes=4 ) göz atın. URL'de name ve numtimes için farklı değerler deneyebilirsiniz.
ASP.NET MVC model bağlama sistemi, adlandırılmış parametreleri adres çubuğundaki sorgu dizesinden yönteminizdeki parametrelere otomatik olarak eşler.
Yukarıdaki örnekte URL kesimi ( Parameters) kullanılmaz, name ve numTimes parametreleri sorgu dizesi olarak geçirilir. Şu mu? (soru işareti) yukarıdaki URL'de bir ayırıcıdır ve sorgu dizeleri bunu izler. & karakteri sorgu dizelerini ayırır.
Welcome yöntemini aşağıdaki kodla değiştirin:
public string Welcome(string name, int ID = 1)
{
return HttpUtility.HtmlEncode("Hello " + name + ", ID: " + ID);
}
Uygulamayı çalıştırın ve aşağıdaki URL'yi girin: http://localhost:xxx/HelloWorld/Welcome/1?name=Scott
Bu kez, üçüncü URL segmenti, yol parametresi ID. ile eşleşti. Eylem Welcome yönteminde, URL belirtimi yöntemindeki ID ile eşleşen bir parametre (RegisterRoutes) bulunur.
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
ASP.NET MVC uygulamalarında, parametreleri yol verileri olarak geçirmek (yukarıdaki kimlikle yaptığımız gibi) bunları sorgu dizesi olarak geçirmekten daha normaldir. Hem name hem de numtimes parametrelerini URL'de rota verileri olarak geçirmek için bir rota da ekleyebilirsiniz.
App_Start\RouteConfig.cs dosyasına "Hello" yolunu ekleyin:
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "Hello",
url: "{controller}/{action}/{name}/{id}"
);
}
}
Uygulamayı çalıştırın ve /localhost:XXX/HelloWorld/Welcome/Scott/3 adresine gidin.
Birçok MVC uygulaması için varsayılan yol düzgün çalışır. Bu öğreticinin ilerleyen bölümlerinde model bağlayıcısını kullanarak veri geçirmeyi öğreneceksiniz ve bunun için varsayılan yolu değiştirmeniz gerekmez.
Bu örneklerde denetleyici, MVC'nin "VC" bölümünü, yani görünüm ve denetleyici çalışmasını gerçekleştirmiştir. Denetleyici doğrudan HTML döndürer. Normalde denetleyicilerin doğrudan HTML döndürmesini istemezsiniz, çünkü bu kod için çok hantal hale gelir. Bunun yerine, HTML yanıtının oluşturulmasına yardımcı olması için genellikle ayrı bir görünüm şablonu dosyası kullanacağız. Şimdi bunu nasıl yapabileceğimize bakalım.