ASP.NET MVC 2 Sürümündeki Yenilikler

Bu belgede ASP.NET MVC 2'de sunulan yeni özellikler ve geliştirmeler açıklanmaktadır.

Giriş
ASP.NET MVC 1.0 Projesini ASP.NET MVC 2'ye Yükseltme
Yeni Özellikler
Şablonlu Yardımcılar
Alanlar
Zaman Uyumsuz Denetleyici desteği
Action-Method Parametrelerinde DefaultValueAttribute Desteği
Model Bağlayıcıları ile İkili Verileri Bağlama Desteği
ModelMetadata ve ModelMetadataProvider Sınıfları
DataAnnotations Öznitelikleri Desteği
Model Doğrulayıcı Sağlayıcıları
İstemci Tarafı Doğrulama
Visual Studio 2010 için Yeni Kod Parçacıkları
Yeni RequireHttpsAttribute Eylem Filtresi
HTTP Yöntemi Fiilini Geçersiz Kılma
Şablonlu Yardımcılar için Yeni HiddenInputAttribute Sınıfı
Html.ValidationSummary Yardımcı Yöntemi Model-Level Hataları Görüntüleyebilir
Visual Studio'daki T4 Şablonları, .NET Framework API Geliştirmelerinin Hedef Sürümüne Özgü Kod Oluşturma
Hataya Neden Olan Değişiklikler
Bildirim

Giriş

ASP.NET MVC 2, ASP.NET MVC 1.0'ı oluşturur ve üretkenliği artırmaya odaklanan büyük bir geliştirme ve özellik kümesi sunar. Bu sürüm ASP.NET MVC 1.0 ile uyumludur, bu nedenle ASP.NET MVC 1.0 için tüm bilgi, beceri, kod ve uzantılarınız uygulanmaya devam eder.

ASP.NET MVC hakkında daha fazla bilgi için aşağıdaki kaynakları ziyaret edin:

ASP.NET MVC 1.0 Projesini ASP.NET MVC 2'ye Yükseltme

ASP.NET MVC 2 aynı sunucuya ASP.NET MVC 1.0 ile yan yana yüklenebilir ve bu da uygulama geliştiricilerine ASP.NET MVC 1.0 uygulamasını MVC 2'ye ne zaman yükseltecek ASP.NET lerini seçme esnekliği sağlar. Yükseltme hakkında bilgi için ASP.NET MVC 1.0 Uygulamasını ASP.NET MVC 2'ye yükseltme belgesine bakın.

Yeni Özellikler

Bu bölümde, MVC 2 sürümünde sunulan özellikler açıklanmaktadır.

Şablonlu Yardımcılar

Şablonlu yardımcılar, düzenleme ve görüntüleme için HTML öğelerini veri türleriyle otomatik olarak ilişkilendirmenize olanak sağlar. Örneğin, System.DateTime türündeki veriler bir görünümde görüntülendiğinde, tarih seçici kullanıcı arabirimi öğesi otomatik olarak işlenebilir. Bu, alan şablonlarının ASP.NET Dinamik Verilerde çalışma şekline benzer. Daha fazla bilgi için bkz. MSDN Web sitesinde Verileri Görüntülemek için Şablonlu Yardımcıları Kullanma .

Alanlar

Alanlar, büyük bir Web uygulamasının karmaşıklığını yönetmek için büyük bir projeyi birden çok küçük bölüm halinde düzenlemenize olanak sağlar. Her bölüm ("alan") genellikle büyük bir Web sitesinin ayrı bir bölümünü temsil eder ve ilgili denetleyici ve görünüm kümelerini gruplandırmak için kullanılır. Daha fazla bilgi için bkz . İzlenecek Yol: MSDN Web sitesindeki Alanlara Göre ASP.NET MVC Uygulaması Düzenleme .

Yeni bir alan oluşturmak için, Çözüm Gezgini projeye sağ tıklayın, Ekle'ye ve ardından Alan'a tıklayın. Bu, alan adını girmenizi isteyen bir iletişim kutusu görüntüler. Alan adını girdikten sonra Visual Studio projeye yeni bir alan ekler.

Aşağıdaki şekilde, Yönetici ve Bloglar olmak üzere iki alanı olan bir proje için örnek düzen gösterilmektedir.

Yönetici ve Bloglar olmak üzere iki Alan içeren Çözüm Gezgini açılan kutusunda bir proje için örnek düzeni gösteren ekran görüntüsü.

Bir alan oluşturduğunuzda, Visual Studio her alana AreaRegistration'dan türetilen bir sınıf ekler. Bu sınıf, aşağıdaki örnekte gösterildiği gibi alanı ve yollarını kaydetmek için gereklidir:

namespace MyApplication.Areas.Blog {
    public class BlogAreaRegistration : AreaRegistration {
        public override string AreaName {
            get { return "blog"; }
        }

        public override void RegisterArea(AreaRegistrationContext context) {
            context.MapRoute(
                "blog_default",
                "blog/{controller}/{action}/{id}",
                new { action = "Index", id = UrlParameter.Optional }
            );

            context.MapRoute(
                "blog_whatsnew",
                "whats-new",
                new { action = "WhatsNew", id = UrlParameter.Optional  }
            );
        }
    }
}

ASP.NET MVC 2 için varsayılan proje şablonu, Global.asax dosyasının kodunda RegisterAllAreas yöntemine bir çağrı içerir. Bu yöntem, AreaRegistration sınıfından türetilen tüm türleri arayarak, türün bir örneğini başlatarak ve ardından örnekte RegisterArea yöntemini çağırarak projedeki her alanı kaydeder. Aşağıdaki örnekte bunun nasıl yapıldığı gösterilmektedir.

public class MyMvcApplication : HttpApplication {

    void App_Start() {
        AreaRegistration.RegisterAllAreas();
        RegisterRoutes(RouteTable.Routes);
    }

    public static void RegisterRoutes(RouteCollection routes) {
        routes.MapRoute("default", "{controller}/{action}/{id}", ...);
    }
}

Bağlamı çağırarak RegisterArea yönteminde ad alanını belirtmezseniz. Namespaces.Add yöntemi, kayıt sınıfının ad alanı varsayılan olarak kullanılır.

Zaman Uyumsuz Denetleyici desteği

ASP.NET MVC 2 artık denetleyicilerin istekleri zaman uyumsuz olarak işlemesine izin veriyor. Bu, genellikle engelleme işlemlerini (ağ istekleri gibi) çağıran sunucuların bunun yerine engelleyici olmayan karşılıkları çağırmasına izin vererek performans artışlarına yol açabilir. Daha fazla bilgi için MSDN'deki ASP.NET MVC'de Zaman Uyumsuz Denetleyici Kullanma konusuna bakın.

Action-Method Parametrelerinde DefaultValueAttribute Desteği

System.ComponentModel.DefaultValueAttribute sınıfı, bir eylem yöntemine bağımsız değişken parametresi için varsayılan bir değer sağlanmasına izin verir. Örneğin, aşağıdaki varsayılan yolun tanımlandığını varsayalım:

{controller}/{action}/{id}

Ayrıca aşağıdaki denetleyici ve eylem yönteminin tanımlandığını varsayalım:

public class ArticleController {
    public ActionResult View(int id, [DefaultValue(1)]int page) {
    }
}

Aşağıdaki istek URL'lerinden herhangi biri, önceki örnekte tanımlanan Görünüm eylemi yöntemini çağırır.

  • /Makale/Görünüm/123
  • /Article/View/123?page=1 (Önceki istekle aynı)
  • /Article/View/123?page=2

DefaultValueAttribute özniteliği olmadan, sayfa bağımsız değişkeni değeri sağlanmayan null atanamaz bir değer türü olduğundan, yukarıdaki listeden ilk URL çalışmaz.

Kodunuz Visual Basic 2010 veya Visual C# 2010 ile yazılmışsa, aşağıdaki örnekte gösterildiği gibi DefaultValueAttribute özniteliği yerine isteğe bağlı parametreleri kullanabilirsiniz:

Function View(ByVal id As Integer, Optional ByVal page As Integer = 1) _
        As ActionResult
    ' ...
End Function

public ActionResult MyAction(int id, int page = 1) {
    // ...
}

Model Bağlayıcıları ile İkili Verileri Bağlama Desteği

İkili değerleri base-64 ile kodlanmış dizeler olarak kodlayan Html.Hidden yardımcısının iki yeni aşırı yüklemesi vardır:

public static string Hidden(this HtmlHelper htmlHelper, string name, Binary value);

public static string Hidden(this HtmlHelper htmlHelper, string name, byte[] value);

Tipik bir kullanım, görünümde bir nesne için zaman damgası eklemektir. Örneğin, uygulamanız aşağıdaki Product nesnesini içerebilir:

public class Product {
    //... other properties ...	
    public byte[] TimeStamp {
        get;
        set;
    }
}

Düzenleme formu, aşağıdaki örnekte gösterildiği gibi formda TimeStamp özelliğini işleyebilir:

<%@ Page Inherits="ViewPage<Product>" %>
<%= Html.Hidden("TimeStamp", Model.TimeStamp) %>

Bu işaretleme, zaman damgası değerine sahip gizli bir giriş öğesini aşağıdaki örneğe benzer bir base-64 kodlamalı dize olarak işler:

<input type="hidden" name="TimeStamp" value="QVNQLk5FVCBNVkMgaXMgZnVuIQ==" />

Bu form, aşağıdaki örnekte gösterildiği gibi Ürün türünde bağımsız değişkeni olan bir eylem yöntemine gönderilebilir:

public ActionResult Edit(Product p) {
    // p.TimeStamp is populated from the form
}

Eylem yönteminde TimeStamp özelliği doğru şekilde doldurulur çünkü gönderilen base-64 kodlamalı dize bir bayt dizisine dönüştürülür.

ModelMetadata ve ModelMetadataProvider Sınıfları

ModelMetadataProvider sınıfı, bir görünüm içindeki model için meta verileri almak için bir soyutlama sağlar. MVC 2, System.ComponentModel.DataAnnotations ad alanında öznitelikler tarafından kullanıma sunulan meta verileri kullanıma sağlayan varsayılan bir sağlayıcı içerir. Veritabanları veya XML dosyaları gibi diğer veri depolarından meta veri sağlayan meta veri sağlayıcıları oluşturmak mümkündür.

ViewDataDictionary sınıfı, ModelMetadataProvider sınıfı tarafından modelden ayıklanan meta verileri içeren bir ModelMetadata nesnesini kullanıma sunar. Bu, şablonlu yardımcıların bu meta verileri kullanmasına ve çıkışlarını buna göre ayarlamasına olanak tanır.

Daha fazla bilgi için ModelMetadata ve ModelMetadataProvider sınıflarının belgelerine bakın.

DataAnnotations Öznitelikleri Desteği

ASP.NET MVC 2, giriş doğrulaması sağlamak için bir modele bağlandığınızda RangeAttribute, RequiredAttribute, StringLengthAttribute ve RegexAttribute doğrulama özniteliklerinin (System.ComponentModel.DataAnnotations ad alanında tanımlanır) kullanılmasını destekler.

Daha fazla bilgi için bkz . Nasıl yapılır: MSDN Web sitesindeki DataAnnotations Özniteliklerini Kullanarak Model Verilerini Doğrulama . Bu özniteliklerin kullanımını gösteren örnek bir proje adresinden https://go.microsoft.com/fwlink/?LinkId=157753indirilebilir.

Model-Validator Sağlayıcıları

Model doğrulama sağlayıcı sınıfı, model için doğrulama mantığı sağlayan bir soyutlama temsil eder. ASP.NET MVC, System.ComponentModel.DataAnnotations ad alanına dahil edilen doğrulama özniteliklerini temel alan varsayılan bir sağlayıcı içerir. Ayrıca, özel doğrulama kurallarını ve doğrulama kurallarının modelle özel eşlemelerini tanımlayan kendi doğrulama sağlayıcılarınızı da oluşturabilirsiniz. Daha fazla bilgi için ModelValidatorProvider sınıfının belgelerine bakın.

Client-Side Doğrulama

Model doğrulayıcı sağlayıcı sınıfı, istemci tarafı doğrulama kitaplığı tarafından kullanılabilecek JSON serileştirilmiş veriler biçiminde doğrulama meta verilerini tarayıcıya sunar. ASP.NET MVC 2, daha önce belirtilen DataAnnotations ad alanı doğrulama özniteliklerini destekleyen bir istemci doğrulama kitaplığı ve bağdaştırıcı içerir. Sağlayıcı sınıfı, JSON verilerini işleyen ve alternatif kitaplığa çağrıda bulunan bir bağdaştırıcı yazarak diğer istemci doğrulama kitaplıklarını kullanmanıza da olanak tanır.

Visual Studio 2010 için Yeni Kod Parçacıkları

ASP.NET MVC 2 için bir dizi HTML kod parçacığı Visual Studio 2010 ile birlikte yüklenir. Bu kod parçacıklarının listesini görüntülemek için Araçlar menüsünde Kod Parçacıkları Yöneticisi'ni seçin. Dil için HTML'yi seçin ve konum olarak ASP.NET MVC 2'yi seçin. Kod parçacıklarını kullanma hakkında daha fazla bilgi için Visual Studio belgelerine bakın.

Yeni RequireHttpsAttribute Eylem Filtresi

ASP.NET MVC 2, eylem yöntemlerine ve denetleyicilere uygulanabilen yeni bir RequireHttpsAttribute sınıfı içerir. Varsayılan olarak, filtre SSL olmayan bir (HTTP) isteği SSL özellikli (HTTPS) eşdeğerine yönlendirir.

HTTP Yöntemi Fiilini Geçersiz Kılma

REST mimari stilini kullanarak bir Web sitesi oluşturduğunuzda, bir kaynak için hangi eylemin gerçekleştirileceğini belirlemek için HTTP fiilleri kullanılır. REST, uygulamaların GET, PUT, POST ve DELETE gibi yaygın HTTP fiillerinin tamamını desteklemesini gerektirir.

ASP.NET MVC 2, eylem yöntemlerine uygulayabileceğiniz yeni öznitelikler ve bu özelliğin kısa söz dizimi içerir. Bu öznitelikler, ASP.NET MVC'nin HTTP fiilini temel alan bir eylem yöntemi seçmesini sağlar. Aşağıdaki örnekte, bir POST isteği ilk eylem yöntemini çağıracak ve put isteği ikinci eylem yöntemini çağıracaktır.

[HttpPost]
public ActionResult Edit(int id)

[HttpPut]
public ActionResult Edit(int id, Tag tag)

ASP.NET MVC'nin önceki sürümlerinde, aşağıdaki örnekte gösterildiği gibi bu eylem yöntemleri daha ayrıntılı bir söz dizimi gerektirirdi:

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult Edit(int id) 

[AcceptVerbs(HttpVerbs.Put)] 
public ActionResult Edit(int id, Tag tag)

Tarayıcılar yalnızca GET ve POST HTTP fiillerini desteklediğinden, farklı bir fiil gerektiren bir eyleme gönderi göndermek mümkün değildir. Bu nedenle tüm RESTful isteklerini yerel olarak desteklemek mümkün değildir.

Ancak, POST işlemleri sırasında RESTful isteklerini desteklemek için ASP.NET MVC 2 yeni bir HttpMethodOverride HTML yardımcı yöntemi sunar. Bu yöntem, formun herhangi bir HTTP yöntemini etkili bir şekilde öykünmesine neden olan gizli bir giriş öğesini işler. Örneğin, HttpMethodOverride HTML yardımcı yöntemini kullanarak, form gönderiminin PUT veya DELETE isteği olarak görünmesini sağlayabilirsiniz. HttpMethodOverride davranışı aşağıdaki öznitelikleri etkiler:

  • HttpPostAttribute
  • HttpPutAttribute
  • HttpGetAttribute
  • HttpDeleteAttribute
  • Acceptverbsattribute

Gizli giriş öğesinin adı X-HTTP-Method-Override ve değeri öykünecek HTTP fiiline ayarlanmıştır. Geçersiz kılma değeri bir HTTP üst bilgisinde veya bir sorgu dizesi değerinde ad/değer çifti olarak da belirtilebilir.

Geçersiz kılma yalnızca gerçek istek bir POST isteği olduğunda kullanılabilir. Geçersiz kılma değeri, başka bir HTTP fiili kullanan istekler için yoksayılır.

Şablonlu Yardımcılar için Yeni HiddenInputAttribute Sınıfı

Modeli düzenleyici şablonunda görüntülerken gizli bir giriş öğesinin işlenip işlenmeyeceğini belirtmek için model özelliğine yeni HiddenInputAttribute özniteliğini uygulayabilirsiniz. (özniteliği HiddenInput'un örtük UIHint değerini ayarlar). Özniteliğin DisplayValue özelliği, değerin düzenleyici ve görüntüleme modlarında görüntülenip görüntülenmeyeceğini belirtmenize olanak tanır. DisplayValue false olarak ayarlandığında hiçbir şey görüntülenmez, normalde bir alanı çevreleyen HTML işaretlemesi bile görüntülenmez. DisplayValue için varsayılan değer true değeridir.

Aşağıdaki senaryolarda HiddenInputAttribute özniteliğini kullanabilirsiniz:

  • Bir görünüm kullanıcıların bir nesnenin kimliğini düzenlemesine izin veriyorsa ve değeri görüntülemenin yanı sıra, denetleyiciye geri geçirilebilmesi için eski kimliği içeren gizli bir giriş öğesi sağlamak gerekir.
  • Görünüm, kullanıcıların zaman damgası özelliği gibi hiçbir zaman görüntülenmemesi gereken ikili özelliği düzenlemesine izin veriyorsa. Bu durumda, değer ve çevresindeki HTML işaretlemesi (etiket ve değer gibi) görüntülenmez.

Aşağıdaki örnekte HiddenInputAttribute sınıfının nasıl kullanılacağı gösterilmektedir.

public class ProductViewModel {
    [HiddenInput] // equivalent to [HiddenInput(DisplayValue=true)]
    public int Id { get; set; }

    public string Name { get; set; }

    [HiddenInput(DisplayValue=false)]
    public byte[] TimeStamp { get; set; }
}

Öznitelik true olarak ayarlandığında (veya parametre belirtilmediğinde), aşağıdakiler gerçekleşir:

  • Görüntü şablonlarında bir etiket işlenir ve değer kullanıcıya görüntülenir.
  • Düzenleyici şablonlarında bir etiket işlenir ve değer gizli bir giriş öğesinde işlenir.

Öznitelik false olarak ayarlandığında aşağıdakiler gerçekleşir:

  • Görüntü şablonlarında bu alan için hiçbir şey işlenmez.
  • Düzenleyici şablonlarında etiket işlenmez ve değer gizli bir giriş öğesinde işlenir.

Html.ValidationSummary Yardımcı Yöntemi Model-Level Hataları Görüntüleyebilir

Html.ValidationSummary yardımcı yöntemi her zaman tüm doğrulama hatalarını görüntülemek yerine yalnızca model düzeyinde hataları görüntülemeye yönelik yeni bir seçeneğe sahiptir. Bu, her alanın yanında doğrulama özetinde model düzeyi hataların ve alana özgü hataların görüntülenmesini sağlar.

Visual Studio'daki T4 Şablonları, .NET Framework Hedef Sürümüne Özgü Kod Oluşturur

uygulama tarafından kullanılan .NET Framework sürümünü belirten ASP.NET MVC T4 konağından T4 dosyaları için yeni bir özellik kullanılabilir. Bu, T4 şablonlarının .NET Framework bir sürümüne özgü kod ve işaretleme oluşturmasını sağlar. Visual Studio 2008'de değer her zaman .NET 3.5'tir. Visual Studio 2010'da değer .NET 3.5 veya .NET 4'dür.

API geliştirmeleri

Bu bölümde, mevcut ASP.NET MVC türlerinde ve üyelerinde yapılan değişiklikler açıklanmaktadır.

  • Controller sınıfına korumalı bir sanal CreateActionInvoker yöntemi eklendi. Bu yöntem, Denetleyici'nin ActionInvoker özelliği tarafından çağrılır ve önceden ayarlanmış bir çağırıcı yoksa çağırıcının yavaş örneklenmesine olanak tanır.
  • AuthorizeAttribute sınıfına korumalı bir sanal HandleUnauthorizedRequest yöntemi eklendi. Bu, yetkilendirme başarısız olduğunda davranışı denetlemek için AuthorizeAttribute'tan türetilen filtreleri etkinleştirir.
  • ValueProviderDictionary sınıfına bir Add(dize anahtarı, nesne değeri) yöntemi eklendi. Bu, aşağıdaki örnekte olduğu gibi ValueProviderDictionary için sözlük başlatıcı söz dizimini kullanmanızı sağlar:
Controller c = new MyController();
c.ValueProvider = new ValueProviderDictionary(null) {
    { "example1", "example1Value" },
    { "example2", "example2Value" },
    { "example3", new int[] { 1, 2, 3 } }
};
  • Sys.Mvc.AjaxContext sınıfına bir get_object yöntemi eklendi. Bu, get_data yöntemine benzer bir JavaScript yöntemidir, ancak yanıtın içerik türü application/json ise get_object JSON nesnesini döndürür.
  • AuthorizationContext sınıfına bir ActionDescriptor özelliği eklendi.
  • Özellik bir form gönderisinde olmadığında id özelliği içeren bir modele bağlanırken karşılaşılan sorunları geçici olarak çözmek için kullanılabilecek bir UrlParameter.Optional belirteci eklendi. Daha fazla ayrıntı için Phil Haack'ın blogundaki MVC 2 İsteğe Bağlı URL Parametreleri ASP.NET girişe bakın.

Hataya Neden Olan Değişiklikler

Aşağıdaki değişiklikler, mevcut ASP.NET MVC 1.0 uygulamalarında hatalara neden olabilir.

IDataErrorInfo uygulayan sınıflar için özellik doğrulama davranışında değişiklik

Doğrulama gerçekleştirmek için IDataErrorInfo kullanan model nesneleri için, yeni bir değer ayarlanıp ayarlanmadığına bakılmaksızın her özellik doğrulanır. ASP.NET MVC 1.0'da yalnızca yeni değerler ayarlanmış özellikler doğrulandı. ASP.NET MVC 2'de, IDataErrorInfo'nun Error özelliği yalnızca tüm özellik doğrulayıcıları başarılı olduğunda çağrılır.

IIS betiği eşleme betiği artık yükleyicide kullanılamıyor

IIS betik eşleme betiği, Klasik modda IIS 6 ve IIS 7 için betik eşlemelerini yapılandırmak için kullanılan bir komut satırı betiğidir. Visual Studio Geliştirme Sunucusu kullanıyorsanız veya TÜMLEŞIK modda IIS 7 kullanıyorsanız betik eşleme betiği gerekli değildir. Betikler , ASP.NET WebStack'te ayrı bir desteklenmeyen indirme olarak kullanılabilir.

MVC Vadeli İşlemlerinde Html.Substitute yardımcı yöntemi artık kullanılamıyor

MVC görünüm altyapılarının işleme davranışındaki değişiklikler nedeniyle Html.Substitute yardımcı yöntemi çalışmaz ve kaldırılmıştır.

IValueProvider arabirimi IDictionary'nin tüm kullanımlarının yerini alır

MVC 1.0'da IDictionary'i kabul eden her özellik veya yöntem bağımsız değişkeni artık IValueProvider'i kabul ediyor. Bu değişiklik yalnızca özel değer sağlayıcıları veya özel model bağlayıcıları içeren uygulamaları etkiler. Bu değişiklikten etkilenen özelliklere ve yöntemlere örnek olarak şunlar verilebilir:

  • ControllerBase ve ModelBindingContext sınıflarının ValueProvider özelliği.
  • Controller sınıfının TryUpdateModel yöntemleri.

Site.css dosyasına yeni CSS sınıfları eklendi

ASP.NET MVC proje şablonlarındaki Site.css dosyası, doğrulama işlevselliği ve şablonlu yardımcılar tarafından kullanılan yeni stilleri içerecek şekilde güncelleştirildi.

Yardımcılar artık bir MvcHtmlString nesnesi döndürür

ASP.NET 4'teki yeni HTML kodlama ifadesi söz diziminin avantajlarından yararlanmak için, HTML yardımcılarının dönüş türü artık dize yerine MvcHtmlString'dir. ASP.NET 3.5'te ASP.NET MVC 2 ve yeni yardımcıları kullanırsanız, HTML kodlama söz diziminin avantajlarından yararlanamazsınız; yeni söz dizimi yalnızca ASP.NET MVC 2'yi ASP.NET 4'te çalıştırdığınızda kullanılabilir.

JsonResult artık yalnızca HTTP POST isteklerine yanıt veriyor

Bilgilerin açığa çıkması olasılığı olan JSON ele geçirme saldırılarını azaltmak için, varsayılan olarak JsonResult sınıfı artık yalnızca HTTP POST isteklerine yanıt verir. Bunun yerine, JsonResult nesnesi döndüren eylem yöntemlerine yönelik Ajax GET çağrıları POST kullanacak şekilde değiştirilmelidir. Gerekirse, JsonResult'un yeni JsonRequestBehavior özelliğini ayarlayarak bu davranışı geçersiz kılabilirsiniz. Olası açıklardan yararlanma hakkında daha fazla bilgi için Phil Haack'ın blogundaki JSON Hijacking blog gönderisine bakın.

ModelBindingContext üzerindeki Model ve ModelType özellik ayarlayıcıları kullanımdan kaldırıldı

ModelBindingContext sınıfına yeni bir ayarlanabilir ModelMetadata özelliği eklendi. Yeni özellik hem Model hem de ModelType özelliklerini kapsüller. Model ve ModelType özellikleri eski olsa da, geriye dönük uyumluluk için özellik oluşturucuları çalışmaya devam eder; değeri almak için ModelMetadata özelliğini temsil ederler.

DefaultControllerFactory sınıfında yapılan değişiklikler, bu sınıftan türetilen özel denetleyici fabrikalarını bozar

DefaultControllerFactory sınıfı, RequestContext özelliği kaldırılarak düzeltildi. Bu özellik yerine, istek bağlam örneği korumalı sanal GetControllerInstance ve GetControllerType yöntemlerine geçirilir. Bu değişiklik DefaultControllerFactory'den türetilen özel denetleyici fabrikalarını etkiler.

Özel denetleyici fabrikaları genellikle ASP.NET MVC uygulamaları için bağımlılık ekleme sağlamak için kullanılır. Özel denetleyici fabrikalarını ASP.NET MVC 2'yi destekleyecek şekilde güncelleştirmek için yöntem imzasını veya imzalarını yeni imzalarla eşleşecek şekilde değiştirin ve özelliği yerine istek bağlamı parametresini kullanın.

"Alan" artık ayrılmış bir yol-değer anahtarıdır

Yol değerlerindeki "alan" dizesi artık MVC'ASP.NET özel bir anlama sahiptir ve "denetleyici" ve "eylem" gibi. Bunun bir etkisi, HTML yardımcılarına "alan" içeren bir yol değeri sözlüğü sağlanması durumunda yardımcıların artık sorgu dizesine "alan" eklemeyecek olmasıdır.

Alanlar özelliğini kullanıyorsanız rota URL'nizin bir parçası olarak {area} kullanmadığınızdan emin olun.

Disclaimer

Bu bir ön belgedir ve burada açıklanan yazılımın son ticari sürümünden önemli ölçüde önce değiştirilebilir.

The information contained in this document represents the current view of Microsoft Corporation on the issues discussed as of the date of publication. Microsoft'un değişen pazar koşullarına yanıt vermesi gerektiğinden, bu durum Microsoft'un bir taahhüdü olarak yorumlanmamalıdır ve Microsoft yayın tarihinden sonra sunulan hiçbir bilginin doğruluğunu garanti edemez.

Bu Teknik İnceleme yalnızca bilgilendirme amaçlıdır. MICROSOFT, BU BELGEDEKI BILGILERLE ILGILI AÇıK, ZıMNI VEYA YASAL HIÇBIR GARANTI VERMEZ.

Tüm geçerli telif hakkı yasalarına uymak kullanıcının sorumluluğundadır. Telif hakkı kapsamındaki haklar sınırlandırılmadan, bu belgenin hiçbir bölümü, Microsoft Corporation'ın açık yazılı izni olmadan herhangi bir biçimde veya herhangi bir şekilde (elektronik, mekanik, fotokopi, kayıt veya başka bir şekilde) ya da herhangi bir amaçla çoğaltılamaz, depolanamaz veya bir alma sistemine aktarılamaz.

Microsoft bu belgedeki konuyu kapsayan patentlere, patent uygulamalarına, ticari markalara, telif haklarına veya diğer fikri mülkiyet haklarına sahip olabilir. Microsoft'un yazılı lisans sözleşmelerinde açıkça belirtilmedikçe, bu belgenin sağlanması size bu patentler, ticari markalar, telif hakları veya diğer fikri mülkiyetler için herhangi bir lisans vermez.

Aksi belirtilmediği sürece, burada gösterilen örnek şirketler, kuruluşlar, ürünler, etki alanı adları, e-posta adresleri, logolar, kişiler, yerler ve etkinlikler kurgusaldır ve herhangi bir gerçek şirket, kuruluş, ürün, etki alanı adı, e-posta adresi, logo, kişi, yer veya olayla ilişkili değildir veya çıkarılmalı.

© 2010 Microsoft Corporation. All rights reserved.

Microsoft ve Windows, Microsoft Corporation'ın Birleşik Devletler ve/veya diğer ülkelerde kayıtlı ticari markaları veya ticari markalarıdır.

The names of actual companies and products mentioned herein may be the trademarks of their respective owners.