ASP.NET MVC 3 Sürüm Notları

Genel Bakış

Bu belgede Visual Studio 2010 için ASP.NET MVC 3 RTM sürümü açıklanmaktadır. ASP.NET MVC, Model-View-Controller (MVC) desenini kullanan Web uygulamaları geliştirmeye yönelik bir çerçevedir. ASP.NET MVC 3 yükleyicisi aşağıdaki bileşenleri içerir:

  • MVC 3 çalışma zamanı bileşenlerini ASP.NET
  • MVC 3 Visual Studio 2010 araçlarını ASP.NET
  • Web Sayfaları çalışma zamanı bileşenlerini ASP.NET
  • Web Sayfaları Visual Studio 2010 araçlarını ASP.NET
  • .NET için Microsoft Paket Yöneticisi (NuGet)
  • Razor söz dizimi desteğini etkinleştiren Visual Studio 2010 güncelleştirmesi. (Ayrıntılar için 2483190 Bilgi Bankası makalesine bakın.)

ASP.NET MVC 3'ün her yayın öncesi sürümü için tam sürüm notları, ASP.NET web sitesinde aşağıdaki URL'de bulunabilir:

https://www.asp.net/learn/whitepapers/mvc3-release-notes

Yükleme Notları

ASP.NET MVC 3 RTM'yi Web Platformu Yükleyicisi'ni (Web PI) kullanarak yüklemek için aşağıdaki sayfayı ziyaret edin:

https://www.microsoft.com/web/gallery/install.aspx?appid=MVC3

Alternatif olarak, visual studio 2010 için ASP.NET MVC 3 RTM yükleyicisini aşağıdaki sayfadan indirebilirsiniz:

https://go.microsoft.com/fwlink/?LinkID=208140

ASP.NET MVC 3 yüklenebilir ve ASP.NET MVC 2 ile yan yana çalıştırılabilir.

Yazılım Gereksinimleri

ASP.NET MVC 3 çalışma zamanı bileşenleri aşağıdaki yazılımları gerektirir:

  • .NET Framework sürüm 4.

    ASP.NET MVC 3 Visual Studio 2010 araçları aşağıdaki yazılımları gerektirir:

  • Visual Studio 2010 veya Visual Web Developer 2010 Express.

Belgeler

ASP.NET MVC belgelerine MSDN Web sitesinden aşağıdaki URL'de ulaşabilirsiniz:

https://go.microsoft.com/fwlink/?LinkId=205717

ASP.NET MVC ile ilgili öğreticiler ve diğer bilgiler, ASP.NET Web sitesinin MVC sayfasında aşağıdaki URL'de bulunabilir:

https://www.asp.net/mvc/

Destek

Bu, tam olarak desteklenen bir sürümdür. Teknik destek alma hakkında bilgi Microsoft Desteği web sitesinde bulunabilir.

Ayrıca, ASP.NET topluluğu üyelerinin sıklıkla resmi olmayan destek sağlayabildiği ASP.NET MVC forumuna bu sürümle ilgili sorular göndermekte çekinmeyin:

https://forums.asp.net/1146.aspx

ASP.NET MVC 2 Projesini ASP.NET MVC 3 Araçları Güncelleştirmesi'ne Yükseltme

ASP.NET MVC 3 aynı bilgisayara ASP.NET MVC 2 ile yan yana yüklenebilir ve bu da ASP.NET MVC 2 uygulamasını MVC 3'e ASP.NET ne zaman yükseltebileceğinizi seçme esnekliği sağlar.

Mevcut bir ASP.NET MVC 2 uygulamasını sürüm 3'e el ile yükseltmek için aşağıdakileri yapın:

  1. Bilgisayarınızda yeni bir boş ASP.NET MVC 3 projesi oluşturun. Bu proje, yükseltme için gereken bazı dosyaları içerir.

  2. aşağıdaki dosyaları ASP.NET MVC 3 projesinden ASP.NET MVC 2 projenizin ilgili konumuna kopyalayın. Yeni dosya adını ( jQuery-1.5.1.js) hesaba eklemek için jQuery kitaplığına yapılan başvuruları güncelleştirmeniz gerekir:

    • /Views/Web.config
    • /packages.config
    • /scripts/*.js
    • /content/themes/*.*
  3. Boş ASP.NET MVC 3 proje çözümünün kökündeki packages klasörünü çözümünüzün .sln dosyasının bulunduğu dizindeki çözümünüzün köküne kopyalayın.

  4. ASP.NET MVC 2 projeniz herhangi bir alan içeriyorsa, /Views/Web.config dosyasını her alanın Görünümler klasörüne kopyalayın.

  5. ASP.NET MVC 2 projesindeki her iki Web.config dosyasında da, ASP.NET MVC sürümünü genel olarak arayın ve değiştirin. Aşağıdakileri bulun:

    System.Web.Mvc, Version=2.0.0.0
    

    Şununla değiştirin:

    System.Web.Mvc, Version=3.0.0.0
    
  6. Çözüm Gezgini,System.Web.Mvc'ye (sürüm 2'den DLL'ye işaret eden) başvuruyu silin, ardından System.Web.Mvc'ye (v3.0.0.0) başvuru ekleyin.

  7. System.Web.WebPages.dll ve System.Web.Helpers.dll için başvuru ekleyin. Bu derlemeler aşağıdaki klasörlerde bulunur:

    • %ProgramFiles%\ Microsoft ASP.NET\ASP.NET MVC 3\Assemblies
    • %ProgramFiles%\ Microsoft ASP.NET\ASP.NET Web Pages\v1.0\Assemblies
  8. Çözüm Gezgini'da proje adına sağ tıklayın ve Projeyi Kaldır'ı seçin. Ardından proje adına yeniden sağ tıklayın ve ProjectName.csproj Dosyasını Düzenle'yi seçin.

  9. ProjectTypeGuids öğesini bulun ve {F85E285D-A4E0-4152-9332-AB1D724D3325} öğesini {E53F8FEA-EAE0-44A6-8774-FFD645390401} ile değiştirin.

  10. Değişiklikleri kaydedin, projeye sağ tıklayın ve ardından Projeyi Yeniden Yükle'yi seçin.

  11. Uygulamanın kök Web.config dosyasında derlemeler bölümüne aşağıdaki ayarları ekleyin.

    <add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, 
         PublicKeyToken=31BF3856AD364E35" />
    
    <add assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral,
         PublicKeyToken=31BF3856AD364E35" />
    
  12. Proje, ASP.NET MVC 2 kullanılarak derlenen üçüncü taraf kitaplıklara başvuruyorsa, yapılandırma bölümünün altındaki uygulama kökündeki Web.config dosyasına aşağıdaki vurgulanmış bindingRedirect öğesini ekleyin:

    <runtime>
       <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
         <dependentAssembly>
           <assemblyIdentity name="System.Web.Mvc"
               publicKeyToken="31bf3856ad364e35"/>
           <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="3.0.0.0"/>
         </dependentAssembly>
       </assemblyBinding>
    </runtime>
    

ASP.NET MVC 3 Araçları Güncelleştirmesi'ndeki değişiklikler

Bu bölümde, ASP.NET MVC 3 RTM sürümünden bu yana ASP.NET MVC 3 Araçları Güncelleştirmesi sürümünde yapılan değişiklikler açıklanmaktadır.

"Denetleyici Ekle" iletişim kutusu artık görünümler ve veri erişim kodu ile denetleyicilerin iskelesini oluşturabilir

yapı iskelesi, uygulamanız için hızlı bir şekilde bir denetleyici ve görünüm oluşturmanın bir yoludur. Kod oluşturulduktan sonra projenizin gereksinimlerini karşılayacak şekilde düzenleyebilirsiniz.

ASP.NET MVC 3'te Denetleyici Ekle iletişim kutusunu başlatmak için, Çözüm Gezgini'daDenetleyiciler klasörüne sağ tıklayın, Ekle'ye ve ardından Denetleyici'ye tıklayın. İletişim kutusu ek yapı iskelesi seçenekleri sunacak şekilde geliştirilmiştir.

Denetleyici Ekle iletişim kutusunun ekran görüntüsü.

Varsayılan olarak üç yapı iskelesi şablonu vardır.

Boş Denetleyici

Bu şablon boş bir denetleyici dosyası oluşturur. Bu şablon, ASP.NET MVC'nin önceki sürümlerinde oluşturma, düzenleme, ayrıntılar, silme senaryoları için eylem ekle seçeneğinin işaretlenmemesiyle eşdeğerdir. Bunu seçerseniz başka seçenek yoktur.

Boş okuma/yazma eylemleri olan denetleyici

Bu şablon, tüm gerekli eylem yöntemlerini içeren ancak yöntemlerde uygulama kodu olmayan bir denetleyici dosyası oluşturur. Bu şablon, ASP.NET MVC'nin önceki sürümlerinde oluşturma, düzenleme, ayrıntılar, silme senaryoları için eylem ekle'yi denetlemeye eşdeğerdir. Bunu seçerseniz başka seçenek yoktur.

Entity Framework kullanarak okuma/yazma eylemleri ve görünümleri olan denetleyici

Bu şablon, hızla çalışan bir veri girişi kullanıcı arabirimi oluşturmanıza olanak tanır. Aşağıdakiler gibi bir dizi ortak gereksinimi ve senaryoyu işleyen kod oluşturur:

  • Veri erişimi. Oluşturulan kod veritabanındaki varlıkları okur ve yazar. Var olan bir veri bağlamı sınıfını seçerseniz veya şablonun yeni bir DbContext sınıfı oluşturmasına izin verirseniz Entity Framework Code First yaklaşımıyla çalışır. Ayrıca var olan bir ObjectContext sınıfını seçerseniz Entity Framework Database First veya Model First yaklaşımıyla da çalışır.

  • Doğrulama. Oluşturulan kod, form gönderimlerinin model sınıfınızda bildirilen kurallara göre doğrulanması için ASP.NET MVC model bağlama ve meta veri özelliklerini kullanır. Buna Required ve StringLength öznitelikleri gibi yerleşik doğrulama kuralları ve özel doğrulama kuralları dahildir.

  • Bire çok ilişkiler. Model sınıflarınız arasında bire çok yabancı anahtar ilişkileri tanımlarsanız, oluşturulan kod ilgili varlıkları seçmek için açılan listeler oluşturur. Örneğin, Entity Framework Code First kurallarını izleyerek aşağıdaki model sınıflarını tanımlayabilirsiniz:

    public class Product
    {
         public int ProductId { get; set; }
         [Required]
         public string Name { get; set; }
    
         // Product belongs to Category
         public int CategoryId { get; set; }
         public virtual Category Category { get; set; }
    }
    public class Category
    {
         public int CategoryId { get; set; }
         [Required]
         public string Name { get; set; }
    }
    

    Daha sonra Product sınıfı için bir denetleyicinin iskelesini oluşturduğunuzda, bu denetleyicinin görünümleri kullanıcıların her Product örneği için bir Category nesnesi seçmesine olanak tanır.

    Bu şablon , Denetleyici Ekle iletişim kutusunda ek seçenekleri etkinleştirir. Model sınıfı için, çözümünüzde kullanıcıların oluşturabileceği veya düzenleyebileceği veri türünü belirleyen herhangi bir model sınıfını seçebilirsiniz:

  • Entity Framework Code First kullanmak istiyorsanız, herhangi bir model sınıfını seçebilirsiniz.

  • Entity Framework Database First veya Entity Framework Model First kullanıyorsanız kavramsal modelinizde tanımlanmış bir varlık sınıfı seçtiğinizden emin olun.

Veri Bağlamı sınıfı için şu seçimleri yapabilirsiniz:

  • Önce Kod kullanmak istiyorsanız ve mevcut veri bağlamı sınıfınız yoksa ** Yeni veri bağlamı ** öğesini seçin. Ardından sizin için bir veri bağlamı sınıfı oluşturulur.
  • Önce Kod'u kullanmak ve mevcut bir veri bağlamı sınıfına sahip olmak istiyorsanız buradan seçin. Seçtiğiniz model sınıfını kalıcı hale getirmek için güncelleştirilir.
  • Önce Veritabanı veya Model First kullanıyorsanız, nesne bağlam sınıfınızı buradan seçin.

Görünümler için, kullanmak istediğiniz görünüm altyapısını seçin veya görünümlerin iskelesini yapmak istemiyorsanız Yok'u seçin.

Oluşturulan görünümler için daha fazla seçenek belirtmek üzere Gelişmiş Seçenekler'i seçebilirsiniz. Örneğin, kullanılacak düzeni veya ana sayfayı seçebilirsiniz.

"ASP.NET MVC 3 Yeni Proje" İletişim Kutusu İyileştirmeleri

Yeni ASP.NET MVC 3 projeleri oluşturmak için kullandığınız iletişim kutusu aşağıda listelendiği gibi birden çok geliştirme içerir.

Yeni proje iletişim kutusunun ekran görüntüsü. İntranet Uygulaması simgesi ve H T M L 5 semantik işaretleme kullan onay kutusu vurgulanır.

Yeni "Intranet Projesi" Şablonu

Proje Şablonu listesi yeni bir Intranet Uygulaması şablonu içerir. Bu şablon, form kimlik doğrulaması yerine Windows kimlik doğrulaması kullanarak web uygulaması oluşturmaya yönelik ayarları içerir. İntranet uygulaması proje şablonunda kapsüllenemez bazı IIS ayarları gerektirdiğinden, şablonda proje şablonunun IIS'de çalışmasını sağlama yönergelerini içeren bir benioku dosyası bulunur. Yeni intranet uygulaması şablonunun belgeleri msdn web sitesinde aşağıdaki URL'de bulunabilir:

https://msdn.microsoft.com/library/gg703322(VS.98).aspx

Proje şablonları artık HTML5 etkin

Yeni proje iletişim kutusu artık proje şablonlarına HTML5'e özgü özellikler ekleme seçeneği içeriyor. Seçeneğin seçilmesi, yeni HTML5 <header>, <footer>ve <navigation> öğelerini içeren görünümlerin oluşturulmasına neden olur.

Tarayıcıların önceki sürümlerinin HTML5'e özgü etiketleri desteklemediğini unutmayın. Bu sınırlamayı gidermek için, HTML5 proje şablonları Modernizr kitaplığına bir başvuru içerir. (Sonraki bölüme bakın.)

Proje şablonları artık Modernizr 1.7'yi içeriyor

Modernizr, henüz bu özellikleri desteklemeyen tarayıcılarda CSS 3 ve HTML5 desteği sağlayan bir JavaScript kitaplığıdır. Bu kitaplık, ASP.NET MVC 3 projeleri için şablonlara önceden yüklenmiş bir NuGet paketi olarak eklenmiştir. Modernizr hakkında daha fazla bilgi için bkz http://www.modernizr.com/. .

Proje şablonları jQuery' nin güncelleştirilmiş sürümlerini, jQuery kullanıcı arabirimini ve jQuery Doğrulamayı içerir

Proje şablonları artık jQuery betiklerinin aşağıdaki sürümlerini içerir:

  • jQuery 1.5.1
  • jQuery Doğrulaması 1.8
  • jQuery Kullanıcı Arabirimi 1.8.11

Bu kitaplıklar önceden yüklenmiş NuGet paketleri olarak dahil edilir.

Proje şablonları artık önceden yüklenmiş bir NuGet paketi olarak ADO.NET Entity Framework 4.1'i içeriyor

ADO.NET Entity Framework 4.1, Code First özelliğini içerir. Code First, ADO.NET Entity Framework için var olan Önce Veritabanı ve Model İlk desenlerine alternatif sağlayan yeni bir geliştirme desenidir.

Code First, Visual Basic veya C# dilinde yazılmış POCO sınıflarını ("düz eski CLR nesneleri") kullanarak modelinizi tanımlamaya odaklanır. Bu sınıflar daha sonra mevcut bir veritabanına eşlenebilir veya veritabanı şeması oluşturmak için kullanılabilir. DataAnnotations öznitelikleri veya akıcı API'ler kullanılarak ek yapılandırma sağlanabilir.

Code Firstwith ASP.NET MVC kullanma belgeleri ASP.NET web sitesinde aşağıdaki URL'lerde bulunabilir:

https://www.asp.net/mvc/tutorials/getting-started-with-mvc3-part1-cs https://www.asp.net/entity-framework/tutorials/creating-an-entity-framework-data-model-for-an-asp-net-mvc-application

Proje şablonları önceden yüklenmiş NuGet paketleri olarak JavaScript kitaplıklarını içerir

MVC 3 projesi ASP.NET yeni bir proje oluşturduğunuzda proje, betikleri doğrudan proje şablonu içeriğindeki Scripts klasörüne eklemek yerine NuGet kullanarak yükleyerek daha önce bahsedilen JavaScript dosyalarını (örneğin, Modernizr kitaplığı) içerir. Bu, betiklerin yeni sürümleri yayımlandığında betikleri en son sürüme güncelleştirmek için NuGet kullanmanızı sağlar.

Örneğin, yeni jQuery sürümlerinin sıklığı göz önüne alındığında, proje şablonuna dahil edilen jQuery sürümü bir noktada eski olacaktır. Ancak, yüklü bir NuGet paketi olarak jQuery eklendiğinden, daha yeni jQuery sürümleri kullanılabilir olduğunda NuGet iletişim kutusunda size bildirilir.

jQuery dosya adında sürüm numarasını içerdiğinden, jQuery'nin en son sürüme güncelleştirilmesi için yeni dosya adını kullanmak için jQuery dosyasına başvuran etiketin de güncelleştirilmesi <script> gerekir. Dahil edilen diğer betik kitaplıkları, betik adında sürüm numarasını içermez, bu nedenle en son sürümlerine daha kolay güncelleştirilebilirler.

ASP.NET MVC 3'teki Bilinen Sorunlar

  • Bazı durumlarda yükleme "Yükleme hata koduyla (0x80070643)" hata iletisiyle başarısız olabilir. Bu sorunu geçici olarak çözme hakkında bilgi için 2531566 Bilgi Bankası makalesine bakın.
  • Denetleyici eklemeye yönelik yapı iskelesi, Entity Framework içindeki varlık devralma desteğinden yararlanan varlıkların iskelesini oluşturmaz. Örneğin, Student sınıfı tarafından devralınan bir temel Person sınıfı verildiğinde, Student sınıfının iskelesinin oluşturulması, derlenmemiş kod oluşturulmasına neden olur.
  • Çözüm klasörü içinde yeni bir ASP.NET MVC 3 projesi oluşturmak NullReferenceException hatasına neden oluyor. Geçici çözüm, çözümün kökünde ASP.NET MVC 3 projesini oluşturmak ve ardından çözüm klasörüne taşımaktır.
  • Razor için IntelliSense söz dizimi, ReSharper yüklendiğinde çalışmaz. ReSharper'ı yüklediyseniz ve ASP.NET MVC 3'teki Razor IntelliSense desteğinden yararlanmak istiyorsanız, Hadi Hariri'nin blogunda Razor Intellisense ve ReSharper girişine bakın. Bu giriş, bunları bugün birlikte kullanmanın yollarını açıklar.
  • Yükleme sırasında EULA kabul iletişim kutusu, lisans koşullarını istenenden daha küçük bir pencerede görüntüler.
  • Razor görünümünü düzenlerken (.cshtml veya .vbhtml dosyası), görünümler. ASP.NET MVC 3, Razor görünümleri için kod parçacıkları içermez... aspx ASP.NET MVC için kod parçacığı seçme işlemi için kod parçacıklarını gösterir
  • Visual Studio'ASP.NET yüklü olmayan bir bilgisayara Visual Web Developer Express için MVC 3 yüklerseniz ve daha sonra Visual Studio'yu yüklerseniz, MVC 3 ASP.NET yeniden yüklemeniz gerekir. Visual Studio ve Visual Web Developer Express, ASP.NET MVC 3 yükleyicisi tarafından yükseltilen bileşenleri paylaşır. Aynı sorun, Visual Web Developer Express'i olmayan bir bilgisayara Visual Studio için MVC 3 ASP.NET ve daha sonra Visual Web Developer Express yüklerseniz de geçerlidir.

ASP.NET MVC 3 RTM'deki değişiklikler

Bu bölümde, RC2 sürümünden bu yana ASP.NET MVC 3 RTM sürümünde yapılan değişiklikler ve hata düzeltmeleri açıklanmaktadır.

Değişiklik: jQuery kullanıcı arabiriminin sürümü 1.8.7 olarak güncelleştirildi

Visual Studio için ASP.NET MVC proje şablonları, jQuery UI kitaplığının en son sürümünü içerecek şekilde güncelleştirildi. Şablonlar, ilişkili CSS ve görüntü dosyaları gibi jQuery kullanıcı arabirimi için gereken en az kaynak dosyası kümesini de içerir.

Değişiklik: Varsayılan ModelMetadataProvider dataAnnotationsModelMetadataProvider olarak değiştirildi

ASP.NET MVC 3'ün RC2 sürümü, performans geliştirmesi olarak mevcut DataAnnotationsModelMetadataProvider sınıfının üstünde önbelleğe alma sağlayan cachedDataAnnotationsMetadataProvider sınıfını kullanıma sundu. Ancak, bu uygulamayla birlikte bazı hatalar bildirildi, bu nedenle değişiklik geri döndürüldü ve ASP.NET WebStack'te bulunan MVC Vadeli İşlemleri projesine taşındı.

Düzeltildi: Razor ifadesinin boşluk içeren bir bölümünün yapıştırılması, ifadenin ters çevrilmiş olmasına neden olur

ASP.NET MVC 3'ün yayın öncesi sürümlerinde, Razor dosyasına boşluk içeren bir Razor ifadesinin bir bölümünü yapıştırdığınızda, sonuçta elde edilen ifade tersine çevrilir. Örneğin, aşağıdaki Razor kod bloğunu göz önünde bulundurun:

@SomeMethod("first param",
100)
@AnotherMethod()

İlk yöntemde "first param" metnini seçip ikinci yönteme bağımsız değişken olarak yapıştırırsanız, sonuç aşağıdaki gibidir:

@AnotherMethod(param""first)

Doğru davranış, yapıştırma işleminin aşağıdakilere neden olmasıdır:

@AnotherMethod("first param")

Bu sorun, ifadenin yapıştırma işlemi sırasında doğru şekilde korunması için RTM sürümünde düzeltilmiştir.

Düzeltildi: Düzenleyicide açılan razor dosyasını yeniden adlandırmak söz dizimi renklendirmesi ve IntelliSense'i devre dışı bırakır

Dosya düzenleyici penceresinde açılırken Çözüm Gezgini kullanarak razor dosyasının yeniden adlandırılması söz dizimi vurgulama ve IntelliSense'in söz dizimi üzerinde çalışmayı durdurmasına neden olur. Bu, vurgulama ve IntelliSense'in yeniden adlandırma sonrasında korunması için düzeltildi.

ASP.NET MVC 3 RTM için Bilinen Sorunlar

  • NuGet Paket Yöneticisi Konsolu açıkken Visual Studio 2010 SP1 Beta'yı kapatırsanız, Visual Studio kilitlenir ve yeniden başlatmayı dener. Bu, Visual Studio 2010 SP1'in RTM sürümünde düzeltilecektir.
  • ASP.NET MVC 3 yükleyicisi NuGet paket yöneticisinin yalnızca ilk sürümünü yükleyebilir. İlk sürümü yükledikten sonra NuGet, Visual Studio Extension Manager kullanılarak yüklenebilir ve güncelleştirilebilir. NuGet zaten yüklüyse, NuGet'in en son sürümüne güncelleştirmek için Visual Studio Uzantı Galerisi'ne gidin.
  • Çözüm klasörü içinde yeni bir ASP.NET MVC 3 projesi oluşturmak NullReferenceException hatasına neden oluyor. Geçici çözüm, çözümün kökünde ASP.NET MVC 3 projesini oluşturmak ve ardından çözüm klasörüne taşımaktır.
  • Yükleyicinin tamamlanması ASP.NET MVC'nin önceki sürümlerinden çok daha uzun sürebilir. Bunun nedeni, Visual Studio 2010 bileşenlerini güncelleştirmeleridir.
  • Razor için IntelliSense söz dizimi, ReSharper yüklendiğinde çalışmaz. ReSharper'ı yüklediyseniz ve ASP.NET MVC 3'teki Razor IntelliSense desteğinden yararlanmak istiyorsanız, Hadi Hariri'nin blogunda Razor Intellisense ve ReSharper girişine bakın. Bu giriş, bunları bugün birlikte kullanmanın yollarını açıklar.
  • ASP.NET MVC 3'ün Beta sürümüyle oluşturulan CCSHTML ve VBHTML görünümlerinde derleme eylemi doğru ayarlanmaz ve sonuçta proje yayımlandığında bu görünüm türleri atlanır. Bu dosyalar için Derleme Eylemi değeri "İçerik" olarak ayarlanmalıdır. ASP.NET MVC 3 RTM yeni dosyalar için bu sorunu düzeltir, ancak ön sürümlerle oluşturulmuş bir proje için mevcut dosyalar için ayarı düzeltmez.
  • Derleme eylemi menüsünün açık olduğu özellikler iletişim kutusunun ekran görüntüsü. İçerik seçeneği belirlenir.
  • Yükleme sırasında EULA kabul iletişim kutusu, lisans koşullarını istenenden daha küçük bir pencerede görüntüler.
  • Razor görünümünü (.cshtml dosyası) düzenlerken Visual Studio'da Denetleyiciye Git menü öğesi kullanılamaz ve kod parçacıkları yoktur.
  • Visual Studio'ASP.NET yüklü olmayan bir bilgisayara Visual Web Developer Express için MVC 3 yüklerseniz ve daha sonra Visual Studio'yu yüklerseniz, MVC 3 ASP.NET yeniden yüklemeniz gerekir. Visual Studio ve Visual Web Developer Express, ASP.NET MVC 3 yükleyicisi tarafından yükseltilen bileşenleri paylaşır. Aynı sorun, Visual Web Developer Express'i olmayan bir bilgisayara Visual Studio için MVC 3 ASP.NET ve daha sonra Visual Web Developer Express yüklerseniz de geçerlidir.

ASP.NET MVC 3'teki Hataya Neden Olan Değişiklikler

  • ASP.NET MVC'nin önceki sürümlerinde, eylem filtreleri birkaç durum dışında istek başına oluşturulur. Bu davranış hiçbir zaman garantili bir davranış değildi, yalnızca bir uygulama ayrıntısıydı ve filtrelerin sözleşmesi bunları durum bilgisi olmayan olarak değerlendirmekti. ASP.NET MVC 3'te filtreler daha agresif bir şekilde önbelleğe alınır. Bu nedenle, örnek durumunu yanlış depolayan tüm özel eylem filtreleri bozulabilir.
  • Aynı Order değerine sahip özel durum filtreleri için özel durum filtreleri için yürütme sırası değişti. ASP.NET MVC 2 ve önceki sürümlerinde, bir eylem yöntemindekilerle aynı Order değerine sahip denetleyicideki özel durum filtreleri, eylem yöntemindeki özel durum filtrelerinin öncesinde yürütülür. Bu durum genellikle özel durum filtreleri belirtilen Order değeri olmadan uygulandığında geçerli olur. ASP.NET MVC 3'te, en özel durum işleyicisinin ilk olarak yürütülmesi için bu sıra tersine çevrilmiştir. Önceki sürümlerde olduğu gibi Order özelliği açıkça belirtilmişse filtreler belirtilen sırada çalıştırılır.
  • VirtualPathProviderViewEngine temel sınıfına FileExtensions adlı yeni bir özellik eklendi. ASP.NET yola göre görünüm ararken (ada göre değil), yalnızca bu yeni özellik tarafından belirtilen listede bulunan dosya uzantısına sahip görünümler dikkate alınır. Bu, Web Formu görünümleri için özel bir dosya uzantısını etkinleştirmek üzere özel derleme sağlayıcısının kaydedildiği ve sağlayıcının ad yerine tam yol kullanarak bu görünümlere başvurduğu uygulamalarda hataya neden olan bir değişikliktir. Geçici çözüm, FileExtensions özelliğinin değerini özel dosya uzantısını içerecek şekilde değiştirmektir.
  • Doğrudan IControllerFactory arabirimini uygulayan özel denetleyici fabrika uygulamaları, bu sürümde arabirime eklenen yeni GetControllerSessionBehavior yönteminin bir uygulamasını sağlamalıdır. Genel olarak, bu arabirimi doğrudan uygulamamanızı ve bunun yerine sınıfınızı DefaultControllerFactory'den türetmenizi öneririz.

ASP.NET MVC 3 RC2'deki değişiklikler

Bu bölümde, RC sürümünden bu yana ASP.NET MVC 3 RC2 sürümünde yapılan değişiklikler (yeni özellikler ve hata düzeltmeleri) açıklanmaktadır.

Proje Şablonları jQuery 1.4.4, jQuery Doğrulama 1.7 ve jQuery Kullanıcı Arabirimi 1.8.6 Içerecek Şekilde Değiştirildi

ASP.NET MVC 3 için proje şablonları artık jQuery, jQuery Doğrulaması ve jQuery kullanıcı arabiriminin en son sürümlerini içerir. jQuery kullanıcı arabirimi, proje şablonlarına yeni bir eklemedir ve kullanışlı kullanıcı arabirimi pencere öğeleri sağlar. jQuery kullanıcı arabirimi hakkında daha fazla bilgi için giriş sayfasını ziyaret edin: http://jqueryui.com/.

"AdditionalMetadataAttribute" Sınıfı eklendi

Bir model özelliği için ModelMetadata.AdditionalValues sözlüğü doldurmak için AdditionalMetadataAttribute sınıfını kullanabilirsiniz.

Örneğin, görünüm modelinin yalnızca yöneticiye görüntülenmesi gereken özelliklere sahip olduğunu varsayalım. Bu modele, aşağıdaki örnekte olduğu gibi adminOnly anahtar ve true değeri kullanılarak yeni öznitelikle açıklama eklenebilir:

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 uygulama geliştiricisi olarak size bağlı.

Geliştirilmiş Görünüm İskelesi

Yapı iskelesi görünümleri için kullanılan T4 şablonları artık TextBoxFor gibi yardımcılar yerine EditorFor gibi şablon yardımcı yöntemlerine çağrılar oluşturuyor. Bu değişiklik, 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.

Görünüm Ekle iskelesi, kurala göre modeldeki birincil anahtar bilgilerinin geliştirilmiş algılama ve kullanımını da içerir. Örneğin, Görünüm Ekle iletişim kutusu, birincil anahtar değerinin düzenlenebilir bir form alanı olarak iskelesi yapılmadığından emin olmak için bu bilgileri kullanır.

Varsayılan Düzenle ve Oluştur şablonları, istemci doğrulaması için gereken jQuery betiklerine başvurular içerir.

Html.Raw Yöntemi eklendi

Varsayılan olarak, Razor görünüm altyapısı HTML tüm değerleri kodlar. Örneğin, aşağıdaki kod parçacığı HTML'yi selamlama değişkeninin içinde kodlar ve böylece sayfada olarak <strong>Hello World!</strong>görüntülenir.

@{
  string greeting = "<strong>Hello World!</strong>";
}

<p>@greeting</p>

Yeni Html.Raw yöntemi, içeriğin güvenli olduğu bilindiğinde kodlanmamış HTML görüntülemenin basit bir yolunu sağlar. Aşağıdaki örnek aynı dizeyi görüntüler, ancak dize işaretleme olarak işlenir:

@{
  string greeting = "<strong>Hello World!</strong>";
}

<p>@Html.Raw(greeting)</p>

"Controller.ViewModel" Özelliği ve "View" Özelliği "ViewBag" olarak yeniden adlandırıldı

Daha önce, Denetleyici'ninViewModel özelliği bir görünümün View özelliğine karşılık geliyordu. Bu özelliklerin her ikisi de dinamik özellik erişimci söz dizimini kullanarak ViewDataDictionary nesnesinin değerlerine erişmek için bir yol sağlar. Karışıklığı önlemek ve daha tutarlı olmak için her iki özellik de aynı olacak şekilde yeniden adlandırıldı.

"ControllerSessionStateAttribute" Sınıfı "SessionStateAttribute" olarak yeniden adlandırıldı

ControllerSessionStateAttribute sınıfı, ASP.NET MVC 3'ün RC sürümünde tanıtıldı. Özelliği daha kısa olacak şekilde yeniden adlandırıldı.

RemoteAttribute "Fields" Özelliği "AdditionalFields" olarak yeniden adlandırıldı

RemoteAttribute sınıfının Fields özelliği kullanıcılar arasında bazı karışıklıklara neden oldu. Bu özelliğin AdditionalFields olarak yeniden adlandırılması amacını net bir şekilde açıklar.

"SkipRequestValidationAttribute" "AllowHtmlAttribute" olarak yeniden adlandırıldı

SkipRequestValidationAttribute özniteliği, hedeflenen kullanımını daha iyi temsil etmek için AllowHtmlAttribute olarak yeniden adlandırıldı.

"Html.ValidationMessage" Yöntemi İlk Yararlı Hata İletisini Görüntüleyecek Şekilde Değiştirildi

Html.ValidationMessage yöntemi, yalnızca ilk hatayı görüntülemek yerine ilk yararlı hata iletisini gösterecek şekilde düzeltildi.

Model bağlama sırasında ModelState sözlüğü, modelin kendisinden ( IValidatableObject uyguluyorsa), özelliğe uygulanan doğrulama özniteliklerinden ve özelliğe erişilirken oluşturulan özel durumlardan dahil olmak üzere özellik hakkında hata iletileri içeren birden çok kaynaktan doldurulabilir.

Html.ValidationMessage yöntemi bir doğrulama iletisi görüntülendiğinde, bunlar genellikle son kullanıcıya yönelik olmadığından özel durum içeren model durumu girdilerini atlar. Bunun yerine yöntemi, bir özel durumla ilişkili olmayan ilk doğrulama iletisini arar ve bu iletiyi görüntüler. Böyle bir ileti bulunmazsa, varsayılan olarak ilk özel durumla ilişkili genel bir hata iletisine ayarlanır.

Belgeye Boşluk Eklenmeyecek Şekilde Bildirim Düzeltildi @model

Önceki sürümlerde, görünümün @model en üstündeki bildirim, işlenen HTML çıkışına boş bir satır eklemiş. Bu, bildirimin boşluk eklememesi için düzeltildi.

Engine-Specific Dosya Adlarını Destekleyecek Altyapıları Görüntülemek için "FileExtensions" Özelliği Eklendi

Görünüm altyapısı, aşağıdaki örnekte olduğu gibi açık bir görünüm yolu kullanarak bir görünüm döndürebilir:

return View("~/views/home/index.cshtml");

İlk görünüm altyapısı her zaman görünümü işlemeye çalışır. Varsayılan olarak, Web Forms görünüm altyapısı ilk görünüm altyapısıdır; Web Forms altyapısı Razor görünümünü işleyemediğinden bir hata oluşur. Görünüm altyapıları artık hangi dosya uzantılarını desteklediğini belirtmek için kullanılan bir FileExtensions özelliğine sahiptir. Bu özellik, ASP.NET bir görünüm altyapısının dosyayı işleyip işleyemeyeceğini belirlediğinde denetlenmektedir. Bu hataya neden olan bir değişikliktir ve daha fazla ayrıntı bu belgenin Yeni Değişiklikler bölümüne eklenmiştir.

"For" Özniteliği için Doğru Değeri Yayan "LabelFor" Yardımcısı düzeltildi

LabelFor yönteminin, giriş öğesinin kimliği yerine name özniteliğiyle eşleşen bir for özniteliğini işlemesine neden olan bir hata düzeltildi. W3C'ye göre , for özniteliği giriş öğesinin kimliğiyle eşleşmelidir.

Model Bağlama Sırasında Açık Değerlere Öncelik Vermek için "RenderAction" Yöntemi Düzeltildi

Önceki sürümlerde, RenderAction yöntemine geçirilen açık değerler, bir alt eylem içindeki model bağlaması sırasında geçerli form değerleri lehine yoksayılıyordu. Düzeltme, model bağlama sırasında açık değerlerin öncelikli olmasını sağlar.

ASP.NET MVC 3 RC2'de Hataya Neden Olan Değişiklikler

  • ASP.NET MVC'nin önceki sürümlerinde, birkaç durum dışında istek başına eylem filtreleri oluşturulmuştur. Bu davranış hiçbir zaman garantili bir davranış değildi, yalnızca bir uygulama ayrıntısıydı ve filtrelerin sözleşmesi bunları durum bilgisi olmayan olarak değerlendirmekti. ASP.NET MVC 3'te filtreler daha agresif bir şekilde önbelleğe alınır. Bu nedenle, örnek durumunu yanlış depolayan tüm özel eylem filtreleri bozulabilir.
  • Aynı Order değerine sahip özel durum filtreleri için özel durum filtreleri için yürütme sırası değişti. ASP.NET MVC 2 ve önceki sürümlerinde, bir eylem yöntemindekilerle aynı Order değerine sahip denetleyicideki özel durum filtreleri, eylem yöntemindeki özel durum filtrelerinin öncesinde yürütüldü. Bu durum genellikle özel durum filtreleri belirtilen Order değeri olmadan uygulandığında geçerli olur. ASP.NET MVC 3'te, en özel durum işleyicisinin ilk olarak yürütülmesi için bu sıra tersine çevrilmiştir. Önceki sürümlerde olduğu gibi Order özelliği açıkça belirtilmişse filtreler belirtilen sırada çalıştırılır.
  • VirtualPathProviderViewEngine temel sınıfına FileExtensions adlı yeni bir özellik eklendi. ASP.NET yola göre görünüm ararken (ada göre değil), yalnızca bu yeni özellik tarafından belirtilen listede bulunan dosya uzantısına sahip görünümler dikkate alınır. Bu, Web Formu görünümleri için özel bir dosya uzantısını etkinleştirmek üzere özel derleme sağlayıcısının kaydedildiği ve sağlayıcının ad yerine tam yol kullanarak bu görünümlere başvurduğu uygulamalarda hataya neden olan bir değişikliktir. Geçici çözüm, FileExtensions özelliğinin değerini özel dosya uzantısını içerecek şekilde değiştirmektir.
  • Doğrudan IControllerFactory arabirimini uygulayan özel denetleyici fabrika uygulamaları, bu sürümde arabirime eklenen yeni GetControllerSessionBehavior yönteminin bir uygulamasını sağlamalıdır. Genel olarak, bu arabirimi doğrudan uygulamamanızı ve bunun yerine sınıfınızı DefaultControllerFactory'den türetmenizi öneririz.

ASP.NET MVC 3 RC2'deki Bilinen Sorunlar

  • ASP.NET MVC 3 yükleyicisi NuGet paket yöneticisinin yalnızca ilk sürümünü yükleyebilir. İlk sürümü yükledikten sonra NuGet, Visual Studio Extension Manager kullanılarak yüklenebilir ve güncelleştirilebilir. NuGet zaten yüklüyse, NuGet'in en son sürümüne güncelleştirmek için Visual Studio Uzantı Galerisi'ne gidin.
  • Çözüm klasörü içinde yeni bir ASP.NET MVC 3 projesi oluşturmak NullReferenceException hatasına neden oluyor. Geçici çözüm, çözümün kökünde ASP.NET MVC 3 projesini oluşturmak ve ardından çözüm klasörüne taşımaktır.
  • Yükleyicinin tamamlanması ASP.NET MVC'nin önceki sürümlerinden çok daha uzun sürebilir. Bunun nedeni, Visual Studio 2010 bileşenlerini güncelleştirmeleridir.
  • Razor için IntelliSense söz dizimi, ReSharper yüklendiğinde çalışmaz. ReSharper'ı yüklediyseniz ve ASP.NET MVC 3 RC2'de Razor IntelliSense desteğinden yararlanmak istiyorsanız, Hadi Hariri'nin blogunda Razor Intellisense ve ReSharper girişine bakın. Bu giriş, bunları bugün birlikte kullanmanın yollarını açıklar.
  • ASP.NET MVC 3'ün Beta sürümüyle oluşturulan CSHTML ve VBHTML görünümlerinde derleme eylemi doğru ayarlanmaz ve sonuçta proje yayımlandığında bu görünüm türleri atlanır. Bu dosyalar için Derleme Eylemi değeri İçerik olarak ayarlanmalıdır". ASP.NET MVC 3 RC2 yeni dosyalar için bu sorunu düzeltir, ancak Beta sürümüyle oluşturulan bir proje için mevcut dosyalar için ayarı düzeltmez. Özellikler iletişim kutusunun ekran görüntüsü. Derleme eylemi menüsü açılır ve içerik seçeneği belirlenir.
  • Yükleme sırasında EULA kabul iletişim kutusu, lisans koşullarını istenenden daha küçük bir pencerede görüntüler.
  • Razor görünümünü (.cshtml dosyası) düzenlerken Visual Studio'da Denetleyiciye Git menü öğesi kullanılamaz ve kod parçacıkları yoktur.
  • Visual Studio'ASP.NET yüklü olmayan bir bilgisayara Visual Web Developer Express için MVC 3 yüklerseniz ve daha sonra Visual Studio'yu yüklerseniz, MVC 3 ASP.NET yeniden yüklemeniz gerekir. Visual Studio ve Visual Web Developer Express, ASP.NET MVC 3 yükleyicisi tarafından yükseltilen bileşenleri paylaşır. Aynı sorun, Visual Web Developer Express'i olmayan bir bilgisayara Visual Studio için MVC 3 ASP.NET ve daha sonra Visual Web Developer Express yüklerseniz de geçerlidir.
  • MVC 3 RC 2 ASP.NET yüklendiğinde, nuget zaten yüklüyse nuget güncelleştirilmez. NuGet'i yükseltmek için Visual Studio Uzantı yöneticisine gidin; kullanılabilir bir güncelleştirme olarak gösterilmelidir. NuGet'i buradan en son sürüme yükseltebilirsiniz.

ASP.NET MVC 3 Sürüm Adayı

ASP.NET MVC Sürüm Adayı 9 Kasım 2010'da yayınlandı.

ASP.NET MVC 3 RC'deki Yeni Özellikler

Bu bölümde, Beta sürümünden bu yana ASP.NET MVC 3 RC sürümünde sunulan özellikler açıklanmaktadır.

NuGet Paket Yöneticisi

ASP.NET MVC 3, Visual Studio projelerine kitaplık ve araç eklemeye yönelik tümleşik bir paket yönetim aracı olan NuGet Paket Yöneticisi'ni (eski adıyla NuPack) içerir. Bu araç, geliştiricilerin kaynak ağacına kitaplık almak için bugün uyguladığı adımları otomatikleştirir.

NuGet ile bir komut satırı aracı olarak, Visual Studio 2010'da tümleşik bir konsol penceresi olarak, Visual Studio bağlam menüsünden ve bir dizi PowerShell cmdlet'i olarak çalışabilirsiniz.

NuGet hakkında daha fazla bilgi için Nuget Belgeleri'ni okuyun.

Geliştirilmiş "Yeni Proje" İletişim Kutusu

Yeni proje oluşturduğunuzda, Yeni Proje iletişim kutusu artık görünüm altyapısını ve ASP.NET MVC proje türünü belirtmenize olanak tanır.

Yeni proje iletişim kutusunun ekran görüntüsü. Görünüm altyapısı menüsü açık ve razor seçili.

İletişim kutusunda listelenen şablon ve görünüm altyapılarının listesini değiştirme desteği bu sürüme dahildir.

Varsayılan şablonlar şunlardır:

Boş. ASP.NET MVC projeleri için varsayılan dizin yapısı, varsayılan ASP.NET MVC stillerini içeren bir Site.css dosyası ve varsayılan JavaScript dosyalarını içeren bir Script dizini dahil olmak üzere ASP.NET MVC projesi için en az sayıda dosya içerir.

İnternet Uygulaması. Üyelik sağlayıcısının ASP.NET MVC ile nasıl kullanılacağını gösteren örnek işlevselliği içerir.

İletişim kutusunda görüntülenen proje şablonlarının listesi Windows kayıt defterinde belirtilir.

OturumSuz Denetleyiciler

Yeni ControllerSessionStateAttribute , System.Web.SessionState.SessionStateBehavior numaralandırma değeri belirterek denetleyiciler için oturum durumu davranışı üzerinde daha fazla denetim sağlar.

Aşağıdaki örnek, bir denetleyiciye yapılan tüm istekler için oturum durumunun nasıl kapatıldığını gösterir.

[ControllerSessionState(SessionStateBehavior.Disabled)]
public class CoolController : Controller {
    public ActionResult Index() {
        object o = Session["Key"]; // Causes an exception.

    }
}

Aşağıdaki örnekte, bir denetleyiciye yapılan tüm istekler için salt okunur oturum durumunun nasıl ayarlanacağı gösterilmektedir.

[ControllerSessionState(SessionStateBehavior.ReadOnly)]
public class CoolController : Controller {
    public ActionResult Index() {
    Session["Key"] = "value"; // Value is not available in
    the next request
    }
}

Yeni Doğrulama Öznitelikleri

CompareAttribute

Yeni CompareAttribute doğrulama özniteliği, bir modelin iki farklı özelliğinin değerlerini karşılaştırmanıza olanak tanır. Aşağıdaki örnekte ComparePassword özelliğinin geçerli olması için Password alanıyla eşleşmesi gerekir.

public class User {
    [Required]

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

RemoteAttribute

Yeni RemoteAttribute doğrulama özniteliği, istemci tarafı doğrulamanın sunucuda gerçek doğrulama mantığını gerçekleştiren bir yöntemi çağırmasını sağlayan jQuery Doğrulama eklentisinin uzak doğrulayıcıdan yararlanır.

Aşağıdaki örnekte, UserName özelliğinde RemoteAttribute uygulanmıştır. Bu özelliği Düzenle görünümünde düzenlerken, istemci doğrulaması bu alanı doğrulamak için UsersController sınıfında UserNameAvailable adlı bir eylemi çağırır.

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";
    }
}

Varsayılan olarak, özniteliğin uygulandığı özellik adı eylem yöntemine sorgu dizesi parametresi olarak gönderilir.

"LabelFor" ve "LabelForModel" Yöntemleri için Yeni Aşırı Yüklemeler

Etiket metnini belirtmenize olanak sağlayan LabelFor ve LabelForModel yöntemleri için yeni aşırı yüklemeler eklendi. Aşağıdaki örnekte bu aşırı yüklemelerin nasıl kullanılacağı gösterilmektedir.

@Html.LabelFor(m => m.PropertyName,
"Label Text");
@Html.LabelForModel("Label Text");

Alt Eylem Çıktısını Önbelleğe Alma

OutputCacheAttribute, Html.RenderAction veya Html.Action yardımcı yöntemleri kullanılarak çağrılan alt eylemlerin çıktı önbelleğe alınmasını destekler. Aşağıdaki örnekte başka bir eylemi çağıran bir görünüm gösterilmektedir.

Hi there. The uncached time is:
@DateTime.Now
The cached time is: @Html.Action("GetDate")

GetDate eylemine OutputCacheAttribute ek açıklama eklenir:

[OutputCache(Duration = 100,
VaryByParam = "none")]
public string GetDate() {
    return DateTime.Now.ToString();
}

Bu kod çalıştırıldığında, Html.Action("GetDate") çağrısının sonucu 100 saniye boyunca önbelleğe alınır.

"Görünüm Ekle" İletişim Kutusu Geliştirmeleri

Kesin olarak yazılan bir görünüm eklediğinizde, Görünüm Ekle iletişim kutusu artık birçok temel .NET Framework türü gibi önceki sürümlere göre daha fazla uygulanamaz türü filtreler. Ayrıca, liste artık tam tür adına göre değil sınıf adına göre sıralanır ve bu da türleri bulmayı kolaylaştırır. Örneğin, tür adı artık aşağıdaki örnekte gösterildiği gibi görüntülenir:

ClassName (ad alanı)

Önceki sürümlerde bu, aşağıdaki gibi görüntülenirdi:

Namespace.ClassName

Ayrıntılı İstek Doğrulama

ValidateInputAttribute'unExclude özelliği artık yok. Bunun yerine, model bağlama sırasında modelin belirli özellikleri için istek doğrulamanın atlanması için yeni SkipRequestValidationAttribute'u kullanın.

Örneğin, bir blog gönderisini düzenlemek için bir eylem yönteminin kullanıldığını varsayalım:

[HttpPost]
public ActionResult Edit(BlogPostViewModel post) {
    // Save the post in the database
}

Aşağıdaki örnekte blog gönderisinin görünüm modeli gösterilmektedir.

public class BlogPostViewModel {
    public int Id {get; set;}

    public string Subject {get; set;}

    public string Description {get; set;}
}

Bir kullanıcı Description özelliği için bazı işaretlemeler gönderdiğinde, istek doğrulama nedeniyle model bağlama başarısız olur. Blog gönderisi Açıklaması için model bağlama sırasında istek doğrulamayı devre dışı bırakmak için özelliğine SkipRequpestValidationAttribute'u şu örnekte gösterildiği gibi uygulayın:

public class BlogPostViewModel {
    public int Id {get; set;}

    public string Subject {get; set;}

    [SkipRequestValidation]

    public string Description {get; set;}
}

Alternatif olarak, modelin her özelliği için istek doğrulamayı kapatmak için, eylem yöntemine false değeriyle ValidateInputAttribute uygulayın:

[HttpPost]
[ValidateInput(false)]
public ActionResult Edit(BlogPostViewModel post) {
    // Save the post in the database
}

ASP.NET MVC 3 RC'de Hataya Neden Olan Değişiklikler

  • Aynı Order değerine sahip özel durum filtreleri için özel durum filtreleri için yürütme sırası değişti. ASP.NET MVC 2 ve önceki sürümlerinde, bir eylem yöntemindekilerle aynı Sıraya sahip denetleyicideki özel durum filtreleri, eylem yöntemindeki özel durum filtrelerinin öncesinde yürütüldü. Bu durum genellikle özel durum filtreleri belirtilen Order değeri olmadan uygulandığında geçerli olur. ASP.NET MVC 3'te, en özel durum işleyicisinin ilk olarak yürütülmesi için bu sıra tersine çevrilmiştir. Önceki sürümlerde olduğu gibi Order özelliği açıkça belirtilmişse filtreler belirtilen sırada çalıştırılır.
  • VirtualPathProviderViewEngine temel sınıfına FileExtensions adlı yeni bir özellik eklendi. Bir görünümü yola göre ararken (ada göre değil), yalnızca bu yeni özellik tarafından belirtilen listede bulunan dosya uzantısına sahip görünümler dikkate alınır. Bu, web formu görünümleri için özel bir dosya uzantısını etkinleştirmek üzere özel bir derleme sağlayıcısı kaydeden ve bu görünümlere ad yerine tam yol kullanarak başvuranlar için hataya neden olan bir değişikliktir. Geçici çözüm, FileExtensions özelliğinin değerini özel dosya uzantısını içerecek şekilde değiştirmektir.

ASP.NET MVC 3 RC'de Bilinen Sorunlar

  • Visual Studio 2010 bileşenlerini güncelleştirdiğinden yükleyicinin tamamlanması ASP.NET MVC'nin önceki sürümlerinden çok daha uzun sürebilir.
  • Dik yazıyla yazılan görünüm iskelesi seçilirken Görünüm Ekle yapı iskelesi yalnızca yazma özelliklerini oluşturur. Bunlar her zaman yapı iskelesi tarafından yoksayılmalıdır. Görünüm Ekle iletişim kutusu ayrıca bir "Düzenle" veya "Oluştur" görünümü oluştururken salt okunur özelliklerin iskelesini oluşturur. Salt okunur özellikler yalnızca Görüntü ve Liste görünümleri için yapı iskelesi oluşturulmalıdır.
  • Zaman Uyumsuz CTP ile birlikte ASP.NET MVC 3 yüklendiğinde hata ayıklama çalışmaz. ASP.NET MVC 3, Async CTP ile yan yana yüklenemez. Hata ayıklamayı onarmak için Zaman Uyumsuz CTP'yi kaldırın. Daha fazla ayrıntı için MVC 3 RC'nin tüm parçalarını kaldırma hakkında bu blog gönderisini ASP.NET okuyun.
  • Razor Intellisense, Resharper yüklendiğinde çalışmaz. ReSharper'ı yüklediyseniz ve ASP.NET MVC 3 RC'de Razor intellisense desteğinden yararlanmak istiyorsanız, bunları bugün birlikte kullanmanın yollarını tartışan JetBrains'in bu blog gönderisini okuyun.
  • ASP.NET MVC 3'ün Beta sürümüyle oluşturulan CSHTML ve VBHTML görünümlerinin derleme eylemi doğru değildir ve bu da onları yayımlamaktan atlar. Bu dosyalar için Derleme Eylemi "İçerik" olarak ayarlanmalıdır. ASP.NET MVC 3 RC yeni dosyalar için bu sorunu düzeltir, ancak Beta ile oluşturulan bir proje için mevcut dosyalar için ayarı düzeltmez.
  • Visual Studio 2010 bileşenlerini güncelleştirdiğinden yükleyicinin tamamlanması ASP.NET MVC'nin önceki sürümlerinden çok daha uzun sürebilir.
  • "Düzenle" kesin olarak yazılan görünüm iskeleleri seçilirken Görünüm Ekle yapı iskelesi salt okunur özelliklere sahiptir. Benzer şekilde, "Görüntüleme" görünümleri için yalnızca yazma özellikleri iskelesi oluşturulur.
  • Yükleme sırasında EULA kabul iletişim kutusu, lisans koşullarını istenenden daha küçük bir pencerede görüntüler.
  • Visual Studio Async CTP'nin yüklenmesi, ASP.NET MVC 3 araç yüklemesinin bir parçası olarak eklenen Razor sürümüyle çakışmaya neden olur. Visual Studio Async CTP ve Razor yayınını aynı makineye yüklemeyi denemediğinizden emin olun.
  • Razor görünümünü (.cshtml dosyası) düzenlerken Visual Studio'da Denetleyiciye Git menü öğesi kullanılamaz ve kod parçacıkları yoktur.

ASP.NET MVC 3 Beta

ASP.NET MVC 3 Beta, 6 Ekim 2010'da yayımlandı. Aşağıdaki notlar Beta sürümüne özgüdür ve yukarıdaki ASP.NET MVC 3 Sürüm Adayı bölümünde başvuruda bulunan güncelleştirmelere veya değişikliklere tabidir.

MVC 3 Beta ASP.NET Yeni Özellikler

Bu bölümde, ASP.NET MVC 3 Beta sürümünde sunulan özellikler açıklanmaktadır.

NuGet Paket Yöneticisi

ASP.NET MVC 3, Visual Studio projelerine kitaplık ve araç eklemeye yönelik tümleşik bir paket yönetim aracı olan NuGet Paket Yöneticisi'ni içerir. Çoğunlukla, geliştiricilerin kaynak ağaçlarına kitaplık almak için bugün gerçekleştirdikleri adımları otomatikleştirir.

NuGet ile komut satırı aracı olarak, Visual Studio 2010'un içinde tümleşik bir konsol penceresi olarak, Visual Studio bağlam menüsünden ve PowerShell cmdlet'leri kümesi olarak çalışabilirsiniz.

NuGet hakkında daha fazla bilgi için NuGet Belgelerini okuyun.

Geliştirilmiş Yeni Proje İletişim Kutusu

Yeni proje oluşturduğunuzda, Yeni Proje iletişim kutusu artık görünüm altyapısını ve ASP.NET MVC proje türünü belirtmenize olanak tanır.

Yeni proje iletişim kutusunun ekran görüntüsü. Razor, görünüm altyapısı menüsünden seçilir.

İletişim kutusunda listelenen şablon ve görünüm altyapılarının listesini değiştirme desteği bu sürüme dahil değildir.

Varsayılan şablonlar şunlardır:

Boş. ASP.NET MVC projeleri için varsayılan dizin yapısı, varsayılan ASP.NET MVC stillerini içeren küçük bir Site.css dosyası ve varsayılan JavaScript dosyalarını içeren bir Script dizini dahil olmak üzere ASP.NET MVC projesi için en az sayıda dosya içerir.

İnternet Uygulaması. ASP.NET MVC içinde üyelik sağlayıcısının nasıl kullanılacağını gösteren örnek işlevselliği içerir.

Razor Görünümlerinde Kesin Türe Sahip Modelleri Belirtmenin Basitleştirilmiş Yolu

Kesin olarak yazılan Razor görünümleri için model türünü belirtme yolu, CSHTML görünümleri için yeni @model yönerge ve @ModelType VBHTML görünümleri için yönerge kullanılarak basitleştirildi. ASP.NET MVC'nin önceki sürümlerinde Razor görünümleri için şu şekilde kesin olarak belirlenmiş bir model belirtebilirsiniz:

@inherits System.Web.Mvc.WebViewPage

Bu sürümde aşağıdaki söz dizimini kullanabilirsiniz:

@model MyModelNamespace.MyModelType

Yeni ASP.NET Web Sayfaları Yardımcı Yöntemleri desteği

Yeni ASP.NET Web Sayfaları teknolojisi, görünümlere ve denetleyicilere yaygın olarak kullanılan işlevleri eklemek için yararlı olan bir dizi yardımcı yöntem içerir. ASP.NET MVC 3, denetleyiciler ve görünümler içinde (uygun durumlarda) bu yardımcı yöntemlerin kullanılmasını destekler. Bu yöntemler System.Web.Helpers derlemesinde bulunur. Aşağıdaki tabloda ASP.NET Web Sayfaları yardımcı yöntemlerinden birkaçı listelenir.

Yardımcı Açıklama
Grafik Görünüm içinde bir grafik oluşturur. Chart.ToWebImage, Chart.Save ve Chart.Write gibi yöntemleri içerir.
Şifreleme Düzgün şekilde tuzlanmış ve karmalanmış parolalar oluşturmak için karma algoritmaları kullanır.
WebGrid Bir nesne koleksiyonunu (genellikle bir veritabanındaki veriler) kılavuz olarak işler. Sayfalama ve sıralamayı destekler.
WebImage Bir görüntüyü işler.
Webmail E-posta iletisi gönderir.

Yardımcıları ve temel söz dizimini listeleyen bir hızlı başvuru konusu, aşağıdaki URL'deki ASP.NET Razor söz dizimi belgelerinin bir parçası olarak sağlanır:

https://www.asp.net/webmatrix/tutorials/asp-net-web-pages-api-reference

Ek Bağımlılık Ekleme Desteği

ASP.NET MVC 3 Preview 1 sürümünü temel alan geçerli sürüm, iki yeni hizmet ve mevcut dört hizmet için ek destek ve bağımlılık çözümleme ve Common Service Bulucu için geliştirilmiş destek içerir.

Fine-Grained Denetleyicisi Örneği Oluşturma için Yeni IControllerActivator Arabirimi

Yeni IControllerActivator arabirimi, bağımlılık ekleme yoluyla denetleyicilerin nasıl örneklendiği üzerinde daha ayrıntılı denetim sağlar. Aşağıdaki örnekte arabirimi gösterilmektedir:

namespace System.Web.Mvc {
    using System.Web.Routing;

    public interface IControllerActivator {
        IController Create(RequestContext requestContext, Type controllerType);
    }
}

Bu, denetleyici fabrikasının rolüyle karşıtlık sağlar. Denetleyici fabrikası, IControllerFactory arabiriminin bir uygulamasıdır ve hem bir denetleyici türünü bulmak hem de bu denetleyici türünün bir örneğini örneklemek için sorumludur.

Denetleyici etkinleştiricileri yalnızca bir denetleyici türünün örneğini oluşturmakla sorumludur. Denetleyici türü aramasını gerçekleştirmez. Uygun bir denetleyici türü bulunduktan sonra denetleyici fabrikaları, denetleyicinin gerçek örneğini işlemek için bir IControllerActivator örneğine temsilci atamalıdır.

DefaultControllerFactory sınıfı, IControllerFactory örneğini kabul eden yeni bir oluşturucuya sahiptir. Bu, varsayılan denetleyici türü arama davranışını geçersiz kılmak zorunda kalmadan denetleyici oluşturma işleminin bu yönünü yönetmek için Bağımlılık Ekleme uygulamanızı sağlar.

IServiceLocator Arabirimi IDependencyResolver ile Değiştirildi

Topluluk geri bildirimlerine dayanarak, ASP.NET MVC 3 Beta sürümü, IServiceLocator arabiriminin kullanımını, ASP.NET MVC'nin gereksinimlerine özgü, daraltılmış bir IDependencyResolver arabirimiyle değiştirdi. Aşağıdaki örnekte yeni arabirim gösterilmektedir:

namespace System.Web.Mvc {
    using System.Collections.Generic;

    public interface IDependencyResolver {
        object GetService(Type serviceType);
        IEnumerable<object> GetServices(Type serviceType);
    }
}

Bu değişikliğin bir parçası olarak ServiceLocator sınıfı da DependencyResolver sınıfıyla değiştirildi. Bağımlılık çözümleyicisinin kaydı, ASP.NET MVC'nin önceki sürümlerine benzer:

DependencyResolver.SetResolver(myResolver);

Bu arabirimin uygulamaları, istenen tür için kayıtlı hizmeti sağlamak üzere temel bağımlılık ekleme kapsayıcısına temsilci seçmeniz yeterlidir.

İstenen türde kayıtlı hizmet olmadığında, ASP.NET MVC bu arabirimin uygulamalarının GetService'ten null döndürmesini ve GetServices'ten boş bir koleksiyon döndürmesini bekler.

Yeni DependencyResolver sınıfı, yeni IDependencyResolver arabirimini veya Common Service Locator arabirimini (IServiceLocator) uygulayan sınıfları kaydetmenizi sağlar. Common Service Bulucu hakkında daha fazla bilgi için bkz. GitHub'da CommonServiceLocator.

Fine-Grained Görünüm Sayfası Örneği Için Yeni IViewActivator Arabirimi

Yeni IViewPageActivator arabirimi, görünüm sayfalarının bağımlılık ekleme yoluyla nasıl örneklendiği üzerinde daha ayrıntılı denetim sağlar. Bu, hem WebFormView örnekleri hem de RazorView örnekleri için geçerlidir. Aşağıdaki örnekte yeni arabirim gösterilmektedir:

namespace System.Web.Mvc {
    public interface IViewPageActivator {
        object Create(ControllerContext controllerContext, Type type);
    }
}

Bu sınıflar artık ViewPage, ViewUserControl ve WebViewPage türlerinin nasıl örneği oluşturulduğunu denetlemek için bağımlılık eklemeyi kullanmanıza olanak tanıyan bir IViewPageActivator oluşturucu bağımsız değişkenini kabul ediyor.

Mevcut Hizmetler için Yeni Bağımlılık ÇözümleyiciSi Desteği

Yeni sürüm, aşağıdaki hizmetler için bağımlılık çözümleme desteği içerir:

  • Model doğrulama sağlayıcıları. ModelValidatorProvider uygulayan sınıflar bağımlılık çözümleyicisine kaydedilebilir ve sistem bunları istemci ve sunucu tarafı doğrulamasını desteklemek için kullanır.
  • Model meta veri sağlayıcısı. ModelMetadataProvider'ı uygulayan tek bir sınıf bağımlılık çözümleyicisine kaydedilebilir ve sistem şablon oluşturma ve doğrulama sistemleri için meta veriler sağlamak için bunu kullanır.
  • Değer sağlayıcıları. ValueProviderFactory uygulayan sınıflar bağımlılık çözümleyicisine kaydedilebilir ve sistem bunları denetleyici tarafından ve model bağlaması sırasında kullanılan değer sağlayıcıları oluşturmak için kullanır.
  • Model bağlayıcıları. IModelBinderProvider uygulayan sınıflar bağımlılık çözümleyicisine kaydedilebilir ve sistem bunları kullanarak model bağlama sistemi tarafından kullanılan model bağlayıcıları oluşturur.

Engelleyici Olmayan jQuery Tabanlı Ajax için Yeni Destek

ASP.NET MVC aşağıdaki gibi Ajax yardımcı yöntemlerini içerir:

  • Ajax.ActionLink
  • Ajax.RouteLink
  • Ajax.BeginForm
  • Ajax.BeginRouteForm

Bu yöntemler, tam geri gönderme kullanmak yerine sunucuda bir eylem yöntemi çağırmak için JavaScript kullanır. Bu işlev, jQuery'nin avantajlarından dikkat çekmeden yararlanacak şekilde güncelleştirildi. Bu yardımcı yöntemler, satır içi istemci betiklerini izinsiz olarak yaymak yerine data-ajax ön ekini kullanarak HTML5 özniteliklerini yayarak davranışı işaretlemeden ayırır. Daha sonra uygun JavaScript dosyalarına başvurarak işaretlemeye davranış uygulanır. Aşağıdaki JavaScript dosyalarına başvuruldığından emin olun:

  • jquery-1.4.1.js
  • jquery.unobtrusive.ajax.js

Bu özellik, ASP.NET MVC 3 yeni proje şablonlarındaki Web.config dosyasında varsayılan olarak etkindir, ancak var olan projeler için varsayılan olarak devre dışıdır. Daha fazla bilgi için, bu belgenin devamında istemci doğrulaması ve göze çarpmayan JavaScript için uygulama genelinde bayraklar eklendi konusuna bakın.

Engelleyici Olmayan jQuery Doğrulaması için Yeni Destek

Varsayılan olarak ASP.NET MVC 3 Beta, istemci tarafı doğrulaması gerçekleştirmek için jQuery doğrulamasını göze çarpmayan bir şekilde kullanır. Göze çarpmayan istemci doğrulamasını etkinleştirmek için, bir görünümden aşağıdakine benzer bir çağrı yapın:

Html.EnableClientValidation();

Bunun için ViewContext.UnobtrusiveJavaScriptEnabled özelliğinin true olarak ayarlanması gerekir ve bunu aşağıdaki çağrıyı yaparak yapabilirsiniz:

Html.EnableUnobtrusiveJavaScript();

Ayrıca aşağıdaki JavaScript dosyalarına başvuruldığından emin olun.

  • jquery-1.4.1.js
  • jquery.validate.js
  • jquery.validate.unobtrusive.js

Bu özellik, ASP.NET MVC 3 yeni proje şablonlarındaki Web.config dosyasında varsayılan olarak etkindir, ancak var olan projeler için varsayılan olarak devre dışıdır. Daha fazla bilgi için, bu belgenin devamında istemci doğrulaması için yeni uygulama genelindeki bayraklar ve göze çarpmayan JavaScript'e bakın.

İstemci Doğrulaması ve Göze Çarpmayan JavaScript için Yeni Application-Wide Bayrakları

Aşağıdaki örnekte olduğu gibi HtmlHelper sınıfının statik üyelerini kullanarak istemci doğrulamasını ve göze çarpmayan JavaScript'i genel olarak etkinleştirebilir veya devre dışı bırakabilirsiniz:

HtmlHelper.ClientValidationEnabled = true;
HtmlHelper.UnobtrusiveJavaScriptEnabled = true;

Varsayılan proje şablonları varsayılan olarak göze çarpmayan JavaScript'i etkinleştirir. Ayrıca aşağıdaki ayarları kullanarak uygulamanızın kök Web.config dosyasında bu özellikleri etkinleştirebilir veya devre dışı bırakabilirsiniz:

<configuration>
        <appSettings>
            <add key="ClientValidationEnabled" value="true"/>
            <add key="UnobtrusiveJavaScriptEnabled" value="true"/>
        </appSettings>
    </configuration>

Bu özellikleri varsayılan olarak etkinleştirebileceğiniz için, htmlhelper sınıfına aşağıdaki örneklerde gösterildiği gibi varsayılan ayarları geçersiz kılmanıza olanak tanıyan yeni aşırı yüklemeler sunulmuştur:

public void EnableClientValidation();
public void EnableClientValidation(bool enabled);
public void EnableUnobtrusiveJavaScript();
public void EnableUnobtrusiveJavaScript(bool enabled);

Geriye dönük uyumluluk için bu özelliklerin her ikisi de varsayılan olarak devre dışı bırakılır.

Görünümler Çalışmadan Önce Çalıştırılacak Kod için Yeni Destek

Artık Views dizinine _viewstart.cshtml (veya _viewstart.vbhtml) adlı bir dosya ekleyebilir ve bu dizinde ve alt dizinlerinde birden çok görünüm arasında paylaşılacak kodu ekleyebilirsiniz. Örneğin, ~/Views klasöründeki _viewstart.cshtml sayfasına aşağıdaki kodu koyabilirsiniz:

@{
    Layout = "~/Views/Shared/_Layout.cshtml";
}

Bu, Görünümler klasöründeki ve tüm alt klasörlerindeki her görünümün düzen sayfasını yinelemeli olarak ayarlar. Görünüm işlenirken, _viewstart.cshtml dosyasındaki kod, görünüm kodu çalıştırılmadan önce çalıştırılır. _viewstart.cshtml kodu bu klasördeki her görünüm için geçerlidir.

Varsayılan olarak, _viewstart.cshtml dosyasındaki kod herhangi bir alt klasördeki görünümler için de geçerlidir. Ancak, tek tek alt klasörler _viewstart.cshtml dosyasının kendi sürümüne sahip olabilir; bu durumda, yerel sürüm önceliklidir. Örneğin, HomeController'ın tüm görünümlerinde ortak olan kodu çalıştırmak için ~/Views/Home klasörüne bir _viewstart.cshtml dosyası yerleştirin.

VBHTML Razor Söz Dizimi için Yeni Destek

Önceki ASP.NET MVC önizlemesi, C# temelinde Razor söz dizimi kullanan görünümler için destek içeriyor. Bu görünümler .cshtml dosya uzantısını kullanır. Razor'ı desteklemeye yönelik devam eden çalışmanın bir parçası olarak, ASP.NET MVC 3 Beta, .vbhtml dosya uzantısını kullanan Visual Basic'te Razor söz dizimi için destek sunar.

VBHTML sayfalarında Visual Basic söz dizimini kullanmaya giriş için aşağıdaki URL'deki öğreticiye bakın:

https://www.asp.net/webmatrix/tutorials/asp-net-web-pages-visual-basic

ValidateInputAttribute Üzerinde Daha Ayrıntılı Denetim

ASP.NET MVC, gelen isteğin kötü amaçlı olabilecek girişler içermediğinden emin olmak için çekirdek ASP.NET istek doğrulama altyapısını çağıran ValidateInputAttribute sınıfını her zaman eklemiştir. Varsayılan olarak, giriş doğrulaması etkindir. Aşağıdaki örnekte olduğu gibi ValidateInputAttribute özniteliğini kullanarak istek doğrulamayı devre dışı bırakmak mümkündür:

[ValidateInput(false)]
public ActionResult SomeAction() {
    return View();
}

Ancak, birçok web uygulamasının HTML'ye izin vermesi gereken tek tek form alanları vardır, ancak kalan alanlar izin vermemelidir. ValidateInputAttribute sınıfı artık istek doğrulamasına dahil edilmemesi gereken alanların listesini belirtmenize olanak tanır.

Örneğin, bir blog altyapısı geliştiriyorsanız, Gövde ve Özet alanlarında işaretlemeye izin vermek isteyebilirsiniz. Bu alanlar, her biri özellik adına ("Gövde" ve "Özet") karşılık gelen bir ad özniteliğine sahip iki giriş öğesiyle temsil edilebilir. Yalnızca bu alanlar için istek doğrulamasını devre dışı bırakmak için, aşağıdaki örnekte olduğu gibi ValidateInput sınıfının Exclude özelliğinde adları (virgülle ayrılmış) belirtin:

[ValidateInput(true, Exclude="Body, Summary")]
public ActionResult About() {
    return View();
}

Yardımcılar, Anonim Nesneler Kullanılarak Belirtilen HTML Öznitelik Adları için Alt Çizgileri Kısa Çizgiye Dönüştürüyor

Yardımcı yöntemler, aşağıdaki örnekte olduğu gibi anonim bir nesne kullanarak öznitelik adı/değer çiftleri belirtmenize olanak sağlar:

Html.TextBox("Name", "Value", new {title = "Title"})

Bu yaklaşım öznitelik adında kısa çizgi kullanmanıza izin vermez, çünkü ASP.NET bir özellik adı için kısa çizgi kullanılamaz. Bununla birlikte, kısa çizgiler özel HTML5 öznitelikleri için önemlidir; örneğin, HTML5 "data-" ön ekini kullanır.

Aynı zamanda, alt çizgiler HTML'deki öznitelik adları için kullanılamaz, ancak özellik adlarında geçerlidir. Bu nedenle, anonim bir nesne kullanarak öznitelikleri belirtirseniz ve öznitelik adları bir alt çizgi içerirse, yardımcı yöntemler alt çizgileri kısa çizgiye dönüştürür. Örneğin, aşağıdaki yardımcı söz diziminde bir alt çizgi kullanılır:

Html.TextBox("Name", "Value", new {data_required = "true"})

Önceki örnek, yardımcı çalıştırıldığında aşağıdaki işaretlemeyi işler:

<input data-required="true" id="Name" name="Name"
       type="textbox" value="Value" />

Hata Düzeltmeleri

EditorFor ve DisplayFor şablon yardımcıları için varsayılan nesne şablonu artık DisplayAttribute.Order özelliğinde belirtilen sıralamayı destekliyor. (Önceki sürümlerde Sipariş ayarı kullanılmamıştı.)

İstemci doğrulaması artık doğrulama özniteliklerinin uygulandığı geçersiz kılınan özelliklerin doğrulanması desteklemektedir.

JsonValueProviderFactory artık varsayılan olarak kaydedilir.

Hataya Neden Olan Değişiklikler

Aynı Order değerine sahip özel durum filtreleri için özel durum filtreleri için yürütme sırası değişti. ASP.NET MVC 2 ve önceki sürümlerinde, eylem yöntemindeki özel durum filtrelerinin öncesinde bir eylem yöntemindekilerle aynı Sıra ile denetleyicide özel durum filtreleri yürütülür. Bu durum genellikle özel durum filtrelerinin belirli bir Order değeri olmadan uygulandığında geçerli olur. ASP.NET MVC 3'te, en özel durum işleyicinin önce yürütülmesi için bu sıra tersine çevrilmiştir. Önceki sürümlerde olduğu gibi Order özelliği açıkça belirtilmişse filtreler belirtilen sırayla çalıştırılır.

Bilinen Sorunlar

Yükleme sırasında EULA kabul iletişim kutusu, lisans koşullarını istenenden daha küçük bir pencerede görüntüler.

Razor görünümlerinin IntelliSense desteği veya söz dizimi vurgulama özelliği yoktur. Visual Studio'da Razor söz dizimi desteğinin sonraki bir sürüme dahil edilmesi beklenmektedir.

Razor görünümünü (CSHTML dosyası) düzenlerken Visual Studio'da Denetleyiciye Git menü öğesi kullanılamaz ve kod parçacıkları yoktur.

Kesin olarak belirlenmiş bir CSHTML görünümü belirtmek için söz dizimi kullanılırken @model , türler için dile özgü kısayollar tanınmaz. Örneğin, @model int çalışmaz, ancak @model Int32 çalışır. Bu hatanın geçici çözümü, model türünü belirtirken gerçek tür adını kullanmaktır.

Kesin olarak belirlenmiş bir CSHTML görünümü belirtmek (veya @ModelType kesin olarak belirlenmiş bir VBHTML görünümü belirtmek) için söz dizimi kullanılırken@model, null atanabilir türler ve dizi bildirimleri desteklenmez. Örneğin, @model int? desteklenmez. Bunun yerine kullanın @model Nullable<Int32>. Söz dizimi @model dizesi[] de desteklenmez; bunun yerine kullanın @model IList<string>.

bir ASP.NET MVC 2 projesini MVC 3 ASP.NET yükseltirken, Web.config dosyasının appSettings bölümüne aşağıdakileri eklediğinizden emin olun:

<appSettings>
  <add key="enableSimpleMembership" value="false" />
</appSettings>

Form Kimlik Doğrulaması'nın kimliği doğrulanmamış kullanıcıları her zaman ~/Account/Login'e yönlendirmesine ve Web.config kullanılan form kimlik doğrulaması ayarını yoksaymalarına neden olan bilinen bir sorun vardır. Geçici çözüm aşağıdaki uygulama ayarını eklemektir.

<add key="autoFormsAuthentication" value="false" />

Disclaimer

© 2011 Microsoft Corporation. All rights reserved. Bu belge "olduğu gibi" sağlanır. URL ve diğer İnternet Web sitesi başvuruları da dahil olmak üzere bu belgede ifade edilen bilgiler ve görünümler bildirimde bulunmadan değişebilir. Kullanımlardan doğacak riskler size aittir.

Bu belge, herhangi bir Microsoft ürününde herhangi bir fikri mülkiyet için size yasal haklar sağlamaz. Bu belgeyi dahili, başvuru amaçlarınız için kopyalayıp kullanabilirsiniz.