ASP.NET MVC 3

(Nisan 2011 Araç Güncelleştirmesi'ne dahildir)

ASP.NET MVC 3, iyi oluşturulmuş tasarım desenlerini ve ASP.NET ve .NET Framework gücünü kullanarak ölçeklenebilir, standartlara dayalı web uygulamaları oluşturmaya yönelik bir çerçevedir.

ASP.NET MVC 2 ile yan yana yüklenir, bu nedenle hemen kullanmaya başlayın!

Yükleyiciyi buradan indirin

Başlıca Özellikler

  • NuGet aracılığıyla genişletilebilir tümleşik yapı iskelesi sistemi
  • HTML 5 etkin proje şablonları
  • Yeni Razor Görünüm Altyapısı da dahil olmak üzere etkileyici görünümler
  • Bağımlılık Ekleme ve Genel Eylem Filtreleri ile güçlü kancalar
  • Göze çarpmayan JavaScript, jQuery Doğrulaması ve JSON bağlaması ile zengin JavaScript desteği
  • Aşağıdaki tam özellik listesini okuyun

ASP.NET MVC 3'teki Yenilikler

Yükleme ve Yardım

ASP.NET MVC 3'e Genel Bakış

ASP.NET MVC 3, ASP.NET MVC 1 ve 2'yi kullanarak hem kodunuzu basitleştiren hem de daha derin genişletilebilirlik sağlayan harika özellikler ekler. Bu konu başlığı altında, bu sürümde yer alan ve aşağıdaki bölümlere ayrılmış yeni özelliklerin birçoğuna genel bir bakış sağlanır:

MvcScaffold tümleştirmesi ile Genişletilebilir yapı iskelesi

Yeni yapı iskelesi sistemi, çerçevede tamamen yeniyseniz toplamayı ve üretken bir şekilde kullanmaya başlamayı ve deneyimliyseniz ve ne yaptığınızı zaten biliyorsanız yaygın geliştirme görevlerini otomatikleştirmeyi kolaylaştırır.

Bu, MvcScaffolding adlı yeni NuGet yapı iskelesi paketi tarafından desteklenir. "yapı iskelesi" terimi birçok yazılım teknolojisi tarafından "daha sonra düzenleyebileceğiniz ve özelleştirebileceğiniz yazılımlarınızın temel ana hatlarını hızla oluşturmak" anlamına gelir. ASP.NET MVC için oluşturduğumuz yapı iskelesi paketi çeşitli senaryolarda büyük ölçüde faydalıdır:

  • MVC'yi ilk kez ASP.NET öğreniyorsanız, size yararlı ve çalışan kodlar edinmenin hızlı bir yolunu sağladığından gereksinimlerinize göre düzenleyip uyarlayabilirsiniz. Boş bir sayfaya bakmanın ve nereden başlayacağınızı bilmiyor olmanın travmasından sizi kurtarır!
  • ASP.NET MVC'yi iyi biliyorsanız ve nesne-ilişkisel eşleyici, görünüm altyapısı, test kitaplığı vb. gibi yeni eklenti teknolojisini keşfediyorsanız, bu teknolojinin oluşturucusu da bu teknoloji için bir yapı iskelesi paketi oluşturmuş olabilir.
  • Test fikstürleri, dağıtım betikleri veya ihtiyacınız olan her şeyi çıkışını veren özel iskeleler oluşturabildiğiniz için, çalışmalarınız tekrar tekrar benzer sınıflar veya dosyalar oluşturmayı içeriyorsa. Ekibinizdeki herkes özel iskelelerinizi de kullanabilir.

MvcScaffolding'deki diğer özellikler şunlardır:

  • C# ve VB projeleri için destek
  • Razor ve ASPX görünüm altyapıları desteği
  • ASP.NET MVC alanlarına yapı iskelesi yerleştirmeyi ve özel görünüm düzenlerini/ana şablonlarını kullanmayı destekler
  • T4 şablonlarını düzenleyerek çıkışı kolayca özelleştirebilirsiniz
  • Özel PowerShell mantığı ve özel T4 şablonları kullanarak tamamen yeni iskeleler ekleyebilirsiniz. Bunlar (ve onlara verdiğiniz tüm özel parametreler) otomatik olarak konsol sekme tamamlama listesinde görünür.
  • Farklı teknolojiler için ek iskeleler içeren NuGet paketleri alabilirsiniz (örneğin, LINQ to SQL için bir kavram kanıtı vardır) ve bunları birlikte karıştırıp eşleştirebilirsiniz

ASP.NET MVC 3 Araçları Güncelleştirmesi, bu yapı iskelesi sistemi için aşağıdakiler gibi harika Visual Studio desteği içerir:

  • Denetleyici Ekle İletişim Kutusu artık Oluşturma, Okuma, Güncelleştirme ve Silme eylemlerinin ve karşılık gelen görünümlerin tam otomatik iskelesini destekler. Bu yapı iskelesi varsayılan olarak EF Code First kullanarak veri erişim kodunun iskelesini oluşturur.
  • Denetleyici Ekle İletişim Kutusu, MvcScaffolding gibi NuGet paketleri aracılığıyla genişletilebilir yapı iskelelerini destekler. Bu, iletişim kutusuna özel iskeleler takmanıza olanak tanır ve bu sayede NHibernate gibi diğer veri erişim teknolojileri için iskeleler ve hatta bu kadar istekliyseniz ODBCDirect ile JET oluşturabilirsiniz!

ASP.NET MVC 3'te yapı iskelesi hakkında daha fazla bilgi için aşağıdaki kaynaklara bakın:

HTML 5 Proje Şablonları

Yeni Proje iletişim kutusu, proje şablonlarının HTML 5 sürümlerini etkinleştir onay kutusunu içerir. Bu şablonlar, alt düzey tarayıcılarda HTML 5 ve CSS 3 için uyumluluk desteği sağlamak için Modernizr 1.7'yi kullanır.

Razor Görünüm Altyapısı

ASP.NET MVC 3, razor adlı ve aşağıdaki avantajları sunan yeni bir görünüm altyapısıyla birlikte gelir:

  • Razor söz dizimi temiz ve kısadır ve en az sayıda tuş vuruşu gerekir.
  • Razor,kısmen C# ve Visual Basic gibi mevcut dilleri temel alarak öğrenilir.
  • Visual Studio, Razor söz dizimi için IntelliSense ve kod renklendirmesi içerir.
  • Razor görünümleri, uygulamayı çalıştırmanıza veya bir web sunucusu başlatmanıza gerek kalmadan birim test edilebilir.

Bazı yeni Razor özellikleri şunlardır:

  • @model görünüme geçirilen türü belirtmek için söz dizimi.
  • @* *@ açıklama söz dizimi.
  • Sitenin tamamı için varsayılan değerleri (örneğin layoutpage) bir kez belirtme özelliği.
  • Html.Raw HTML kodlaması olmadan metin görüntüleme yöntemi.
  • Kodu birden çok görünüm arasında paylaşma desteği (_viewstart.cshtml veya _viewstart.vbhtml dosyaları).

Razor ayrıca aşağıdakiler gibi yeni HTML yardımcıları da içerir:

  • Chart. ASP.NET 4'teki grafik denetimiyle aynı özellikleri sunan bir grafik oluşturur.
  • WebGrid. Sayfalama ve sıralama işlevleriyle birlikte bir veri kılavuzu oluşturur.
  • Crypto. Düzgün şekilde tuzlanmış ve karma parolalar oluşturmak için karma algoritmaları kullanır.
  • WebImage. Bir görüntüyü işler.
  • WebMail. E-posta iletisi gönderir.

Razor hakkında daha fazla bilgi için aşağıdaki kaynaklara bakın:

Birden Çok Görünüm Motoru desteği

ASP.NET MVC 3'teki Görünüm Ekle iletişim kutusu, çalışmak istediğiniz görünüm altyapısını seçmenize ve Yeni Proje iletişim kutusu ise bir proje için varsayılan görünüm altyapısını belirtmenize olanak tanır. Web Forms görünüm altyapısını (ASPX), Razor'ı veya Spark, NHaml veya NDjango gibi bir açık kaynak görünüm altyapısını seçebilirsiniz.

Denetleyici Geliştirmeleri

Genel Eylem Filtreleri

Bazen bir eylem yöntemi çalıştırıldıktan önce veya bir eylem yöntemi çalıştırıldıktan sonra mantık gerçekleştirmek isteyebilirsiniz. Bunu desteklemek için MVC 2 tarafından sağlanan eylem filtrelerini ASP.NET. Eylem filtreleri, belirli denetleyici eylem yöntemlerine eylem öncesi ve eylem sonrası davranış eklemek için bildirim temelli bir araç sağlayan özel özniteliklerdir. Ancak bazı durumlarda, tüm eylem yöntemleri için geçerli olan eylem öncesi veya eylem sonrası davranışı belirtmek isteyebilirsiniz. MVC 3, genel filtreleri koleksiyona ekleyerek belirtmenize GlobalFilters olanak tanır. Genel eylem filtreleri hakkında daha fazla bilgi için aşağıdaki kaynaklara bakın:

Yeni "ViewBag" Özelliği

MVC 2 denetleyicileri, geç bağlanan sözlük ViewData API'sini kullanarak bir görünüm şablonuna veri geçirmenizi sağlayan bir özelliği destekler. MVC 3'te, aynı amaca ulaşmak için özelliğiyle ViewBag biraz daha basit söz dizimi de kullanabilirsiniz. Örneğin, yazmak ViewData["Message"]="text"yerine yazabilirsiniz ViewBag.Message="text". özelliğini kullanmak ViewBag için kesin türü belirlenmiş sınıflar tanımlamanız gerekmez. Bu bir dinamik özellik olduğundan, bunun yerine yalnızca özellikleri alabilir veya ayarlayabilirsiniz ve bunları çalışma zamanında dinamik olarak çözümler. Dahili olarak, ViewBag özellikler sözlükte ad/değer çiftleri ViewData olarak depolanır. (Not: MVC 3'ün yayın öncesi sürümlerinin ViewBag çoğunda özelliğin ViewModel adı verilmiştir.)

Yeni "ActionResult" Türleri

Aşağıdaki ActionResult türler ve ilgili yardımcı yöntemler MVC 3'te yeni veya geliştirilmiştir:

  • HttpNotFoundResult. İstemciye 404 HTTP durum kodu döndürür.
  • RedirectResult. Boole parametresine bağlı olarak geçici bir yeniden yönlendirme (HTTP 302 durum kodu) veya kalıcı bir yeniden yönlendirme (HTTP 301 durum kodu) döndürür. Bu değişiklikle birlikte , Denetleyici sınıfı artık kalıcı yeniden yönlendirmeler gerçekleştirmek için üç yönteme sahiptir: RedirectPermanent, RedirectToRoutePermanentve RedirectToActionPermanent. Bu yöntemler, özelliği olarak ayarlanmış truebir örneğini PermanentRedirectResult döndürür.
  • HttpStatusCodeResult. Kullanıcı tarafından belirtilen http durum kodunu döndürür.

JavaScript ve Ajax Geliştirmeleri

MVC 3'teki Ajax ve doğrulama yardımcıları varsayılan olarak göze çarpmayan bir JavaScript yaklaşımı kullanır. Göze çarpmayan JavaScript, HTML'ye satır içi JavaScript eklemekten kaçınıyor. Bu, HTML'nizi daha küçük ve daha az karmaşık hale getirir ve JavaScript kitaplıklarını değiştirmenizi veya özelleştirmenizi kolaylaştırır. MVC 3'teki doğrulama yardımcıları da eklentiyi jQueryValidate varsayılan olarak kullanır. MVC 2 davranışını istiyorsanız, web.config dosya ayarı kullanarak engelleyici olmayan JavaScript'i devre dışı bırakabilirsiniz. JavaScript ve Ajax geliştirmeleri hakkında daha fazla bilgi için aşağıdaki kaynaklara bakın:

Client-Side Doğrulama Varsayılan Olarak Etkinleştirildi

MVC'nin önceki sürümlerinde, istemci tarafı doğrulamasını Html.EnableClientValidation etkinleştirmek için bir görünümden yöntemini açıkça çağırmanız gerekir. İstemci tarafı doğrulama varsayılan olarak etkinleştirildiğinden MVC 3'te bu artık gerekli değildir. ( web.configdosyasındaki bir ayarı kullanarak bunu devre dışı bırakabilirsiniz.)

İstemci tarafı doğrulamasının çalışması için yine de sitenizdeki uygun jQuery ve jQuery Doğrulama kitaplıklarına başvurmanız gerekir. Bu kitaplıkları kendi sunucunuzda barındırabilir veya Microsoft veya Google'ın CDN'leri gibi bir içerik teslim ağından (CDN) başvurabilirsiniz.

Uzak Doğrulayıcı

ASP.NET MVC 3, jQuery Doğrulama eklentisinin uzak doğrulayıcı desteğinden yararlanmanızı sağlayan yeni RemoteAttribute sınıfını destekler. Bu, istemci tarafı doğrulama kitaplığının yalnızca sunucu tarafında yapılabilecek doğrulama mantığını gerçekleştirmek için sunucuda tanımladığınız özel bir yöntemi otomatik olarak çağırmasını sağlar.

Aşağıdaki örnekte özniteliği, istemci doğrulamasının Remote alanı doğrulamak UserName için sınıfında adlı UserNameAvailableUsersController bir eylemi çağıracağını belirtir.

public class User 
{
    [Remote("UserNameAvailable", "Users")]
    public string UserName { get; set; }
}

Aşağıdaki örnekte ilgili denetleyici gösterilmektedir.

public class UsersController 
{ 
    public bool UserNameAvailable(string username) 
    { 
        if(MyRepository.UserNameExists(username)) 
        { 
            return "false"; 
        } 
        return "true"; 
    } 
}

özniteliğini Remote kullanma hakkında daha fazla bilgi için bkz . How to: Implement Remote Validation in ASP.NET MVC in the MSDN library.

JSON Bağlama Desteği

ASP.NET MVC 3, eylem yöntemlerinin JSON ile kodlanmış verileri almasını ve bunu eylem yöntemi parametrelerine model bağlamasını sağlayan yerleşik JSON bağlama desteği içerir. Bu özellik, istemci şablonlarını ve veri bağlamayı içeren senaryolarda kullanışlıdır. (İstemci şablonları, istemcide yürütülen şablonları kullanarak tek bir veri öğesini veya veri öğesi kümesini biçimlendirmenizi ve görüntülemenizi sağlar.) MVC 3, JSON verilerini gönderip alan sunucudaki eylem yöntemleriyle istemci şablonlarını kolayca bağlamanızı sağlar. JSON bağlama desteği hakkında daha fazla bilgi için Scott Guthrie'nin MVC 3 Önizleme blog gönderisininJavaScript ve AJAX İyileştirmeleri bölümüne bakın.

Model Doğrulama Geliştirmeleri

"DataAnnotations" Meta Veri Öznitelikleri

ASP.NET MVC 3 gibi DisplayAttributemeta veri özniteliklerini desteklerDataAnnotations.

"ValidationAttribute" Sınıfı

sınıfı, ValidationAttribute hangi nesnenin doğrulandığı gibi geçerli doğrulama bağlamı hakkında daha fazla bilgi sağlayan yeni IsValid bir aşırı yüklemeyi desteklemek için .NET Framework 4'te geliştirilmiştir. Bu, modelin başka bir özelliğine göre geçerli değeri doğrulayabileceğiniz daha zengin senaryolar sağlar. Örneğin, yeni CompareAttribute öznitelik bir modelin iki özelliğinin değerlerini karşılaştırmanıza olanak tanır. Aşağıdaki örnekte, özelliğin ComparePassword geçerli olması için alanıyla Password eşleşmesi gerekir.

public class User
{ 
    [Required]
    public string Password { get; set; } 
    [Required, Compare("Password")] 
    public string ComparePassword { get; set; } 
}

Doğrulama Arabirimleri

IValidatableObject arabirimi, model düzeyinde doğrulama gerçekleştirmenizi sağlar ve genel modelin durumuna özgü doğrulama hata iletileri sağlamanıza veya model içindeki iki özellik arasında hata iletileri sağlamanıza olanak tanır. MVC 3 artık model bağlama sırasında arabirimden IValidatableObject hataları alır ve yerleşik HTML formu yardımcılarını kullanarak bir görünümdeki etkilenen alanları otomatik olarak işaretler veya vurgular.

IClientValidatable arabirimi, ASP.NET MVC'nin çalışma zamanında bir doğrulayıcının istemci doğrulama desteği olup olmadığını bulmasını sağlar. Bu arabirim, çeşitli doğrulama çerçeveleriyle tümleştirilecek şekilde tasarlanmıştır.

Doğrulama arabirimleri hakkında daha fazla bilgi için Scott Guthrie'nin MVC 3 Önizleme blog gönderisininModel Doğrulama Geliştirmeleri bölümüne bakın. (Ancak, blogdaki "IValidateObject" başvurusunun "IValidatableObject" olması gerektiğini unutmayın.)

Bağımlılık Ekleme Geliştirmeleri

ASP.NET MVC 3, Bağımlılık Ekleme (DI) uygulama ve Bağımlılık Ekleme veya Denetimin Ters Çevrilmesi (IOC) kapsayıcılarıyla tümleştirme için daha iyi destek sağlar. Di desteği aşağıdaki alanlara eklenmiştir:

  • Denetleyiciler (denetleyici fabrikalarını kaydetme ve ekleme, denetleyicileri ekleme).
  • Görünümler (görünüm altyapılarını kaydetme ve ekleme, görünüm sayfalarına bağımlılık ekleme).
  • Eylem filtreleri (filtreleri bulma ve ekleme).
  • Model bağlayıcıları (kaydetme ve ekleme).
  • Model doğrulama sağlayıcıları (kaydetme ve ekleme).
  • Model meta veri sağlayıcıları (kaydetme ve ekleme).
  • Değer sağlayıcıları (kaydetme ve ekleme).

MVC 3 , Common Service Bulucu kitaplığını ve bu kitaplığın arabirimini destekleyen tüm DI kapsayıcılarını IServiceLocator destekler. Ayrıca DI çerçevelerini tümleştirmeyi kolaylaştıran yeni IDependencyResolver bir arabirimi de destekler.

MVC 3'teki DI hakkında daha fazla bilgi için aşağıdaki kaynaklara bakın:

Diğer Yeni Özellikler

NuGet Tümleştirmesi

ASP.NET MVC 3 kurulumu kapsamında NuGet'i otomatik olarak yükler ve etkinleştirir. NuGet, projelerinizde .NET kitaplıklarını ve araçlarını bulmayı, yüklemeyi ve kullanmayı kolaylaştıran ücretsiz bir açık kaynak paket yöneticisidir. Tüm Visual Studio proje türleriyle (ASP.NET Web Forms ve ASP.NET MVC dahil) çalışır.

NuGet, açık kaynak projeleri (örneğin Moq, NHibernate, Ninject, StructureMap, NUnit, Windsor, RhinoMocks ve Elmah gibi projeler) sürdüren geliştiricilerin kitaplıklarını paketleyip çevrimiçi bir galeriye kaydetmesini sağlar. Daha sonra bu kitaplıklardan birini kullanmak isteyen .NET geliştiricilerinin paketi bulması ve üzerinde çalıştıkları projelere yüklemesi kolaydır.

ASP.NET 3 Araç Güncelleştirmesi ile proje şablonları önceden yüklenmiş NuGet paketlerini içeren JavaScript kitaplıklarını içerir, bu nedenle NuGet aracılığıyla güncelleştirilebilir. Entity Framework Code First ayrıca NuGet paketi olarak önceden yüklenmiştir.

NuGet hakkında daha fazla bilgi için NuGet belgelerine bakın.

Çıktı Önbelleğini Partial-Page

ASP.NET MVC, sürüm 1'den bu yana tam sayfa yanıtlarının çıktı önbelleğe alınmasını desteklemiştir. MVC 3 ayrıca kısmi sayfa çıkış önbelleğe almayı da destekler ve bu da bir yanıtın bölgelerini veya parçalarını kolayca önbelleğe almanızı sağlar. Önbelleğe alma hakkında daha fazla bilgi için, Scott Guthrie'nin MVC 3 sürüm adayıyla ilgili blog gönderisininKısmi Sayfa Çıktısını Önbelleğe Alma bölümüne ve MVC 3 Sürüm Notları'nınAlt Eylem Çıktısını Önbelleğe Alma bölümüne bakın.

İstek Doğrulaması Üzerinde Ayrıntılı Denetim

ASP.NET MVC,XSS ve HTML ekleme saldırılarına karşı otomatik olarak korunmaya yardımcı olan yerleşik istek doğrulamasına sahiptir. Ancak, bazen kullanıcıların HTML içeriği göndermesine izin vermek gibi istek doğrulamasını açıkça devre dışı bırakmak istersiniz (örneğin, blog girdilerinde veya CMS içeriğinde). Artık model bağlama sırasında özellik başına istek doğrulamasını devre dışı bırakmak için modellere allowHtml özniteliği ekleyebilir veya modelleri görüntüleyebilirsiniz. İstek doğrulaması hakkında daha fazla bilgi için aşağıdaki kaynaklara bakın:

Genişletilebilir "Yeni Proje" İletişim Kutusu

ASP.NET MVC 3'te Yeni Proje iletişim kutusuna proje şablonları, görünüm altyapıları ve birim testi proje çerçeveleri ekleyebilirsiniz.

Şablon yapı iskelesi geliştirmeleri

ASP.NET MVC 3 yapı iskelesi şablonları, modellerdeki birincil anahtar özelliklerini tanımlama ve bunları MVC'nin önceki sürümlerinden daha uygun şekilde işleme konusunda daha iyi bir iş görür. (Örneğin, yapı iskelesi şablonları artık birincil anahtarın düzenlenebilir bir form alanı olarak iskelesi yapılmadığından emin olur.)

Varsayılan olarak, Oluşturma ve Düzenleme iskeleleri artık yardımcı yerine yardımcıyı Html.TextBoxFor kullanırHtml.EditorFor. Bu, Görünüm Ekle iletişim kutusu bir görünüm oluşturduğunda modeldeki meta veriler için veri ek açıklaması öznitelikleri biçimindeki desteği geliştirir.

"Html.LabelFor" ve "Html.LabelForModel" için Yeni Aşırı Yüklemeler

ve LabelForModel yardımcı yöntemleri için LabelFor yeni yöntem aşırı yüklemeleri eklendi. Yeni aşırı yüklemeler etiket metnini belirtmenize veya geçersiz kılmanıza olanak tanır.

Oturumsuz Denetleyici Desteği

ASP.NET MVC 3'te bir denetleyici sınıfının oturum durumunu kullanmasını isteyip istemediğinizi ve kullanıyorsanız oturum durumunun okuma/yazma veya salt okunur olmasını isteyip istemediğinizi belirtebilirsiniz. Oturumsuz denetleyici desteği hakkında daha fazla bilgi için bkz. MVC 3 Sürüm Notları.

Yeni "AdditionalMetadataAttribute" Sınıfı

Bir model özelliğinin sözlüğünü doldurmak ModelMetadata.AdditionalValues için AdditionalMetadata özniteliğini kullanabilirsiniz. Örneğin, bir görünüm modelinin yalnızca yöneticiye görüntülenmesi gereken bir özelliği varsa, aşağıdaki örnekte gösterildiği gibi bu özelliğe açıklama ekleyebilirsiniz:

public class ProductViewModel 
{
    [AdditionalMetadata("AdminOnly", true)]
    public string RefundCode {get; set;}
}

Bu meta veriler, bir ürün görünümü modeli işlendiğinde tüm görüntüleme veya düzenleyici şablonlarının kullanımına sunulur. Meta veri bilgilerini yorumlamak size göredir.

AccountController geliştirmeleri

İnternet proje şablonundaki AccountController büyük ölçüde geliştirilmiştir.

Yeni İntranet Proje Şablonu

Windows Kimlik Doğrulaması'nı etkinleştiren ve AccountController'ı kaldıran yeni bir Intranet Proje Şablonu eklenmiştir.