ASP.NET MVC 5.2'deki Yenilikler
Microsoft tarafından
Bu konu başlığında ASP.NET MVC 5.2, Microsoft.AspNet.MVC 5.2.2 ve ASP.NET MVC 5.2.3 Beta'ya yönelik yenilikler açıklanmaktadır
Yazılım Gereksinimleri
- Visual Studio 2012: Visual Studio 2012 için ASP.NET and Web Tools 2013.1'i indirin.
- Visual Studio 2013: Visual Studio 2013 Update veya üzerini indirin. Bu güncelleştirme, ASP.NET MVC 5.2 Razor Görünümlerini düzenlemek için gereklidir.
İndir
Çalışma zamanı özellikleri NuGet galerisinde NuGet paketleri olarak yayınlanmaktadır. Tüm çalışma zamanı paketleri AnlamSal Sürüm oluşturma belirtimini izler. En son ASP.NET MVC 5.2 paketi şu sürüme sahiptir: "5.2.0". NuGet aracılığıyla bu paketleri yükleyebilir veya güncelleştirebilirsiniz. Sürüm, NuGet'te karşılık gelen yerelleştirilmiş paketleri de içerir.
NuGet Paket Yöneticisi Konsolu'nu kullanarak yayımlanan NuGet paketlerini yükleyebilir veya güncelleştirebilirsiniz:
Install-Package Microsoft.AspNet.Mvc -Sürüm 5.2.0
Belgeler
MVC 5.2 ASP.NET hakkında öğreticiler ve diğer bilgiler ASP.NET web sitesinden (https://www.asp.net/mvc) edinilebilir.
ASP.NET MVC 5.2'deki Yeni Özellikler
Öznitelik yönlendirme geliştirmeleri
Öznitelik Yönlendirme artık öznitelik yollarının nasıl bulunup yapılandırıldığı üzerinde tam denetim sağlayan IDirectRouteProvider adlı bir genişletilebilirlik noktası sağlar. IDirectRouteProvider, bu eylemler için tam olarak hangi yönlendirme yapılandırmasının isteneceğini belirtmek üzere ilişkili yol bilgileriyle birlikte bir eylem ve denetleyici listesi sağlamakla sorumludur. MapAttributes/MapHttpAttributeRoutes çağrılırken bir IDirectRouteProvider uygulaması belirtilebilir.
Varsayılan uygulamamız DefaultDirectRouteProvider'ı genişleterek IDirectRouteProvider'ı özelleştirmek en kolay seçenek olacaktır. Bu sınıf, öznitelikleri bulma, yol girdileri oluşturma ve yol ön eki ile alan ön ekini bulma mantığını değiştirmek için ayrı geçersiz kılınabilir sanal yöntemler sağlar.
IDirectRouteProvider'ın yeni öznitelik yönlendirme genişletilebilirliği ile, kullanıcı aşağıdakileri yapabilir:
Öznitelik yollarının devralınma desteği. Örneğin, aşağıdaki senaryoda Blog ve Mağaza denetleyicileri BaseController tarafından tanımlanan bir öznitelik yol kuralı kullanıyor.
[InheritedRoute("attributerouting/{controller}/{action=Index}/{id?}")] public abstract class BaseController : Controller { } public class BlogController : BaseController { public string Index() { return "Hello from blog!"; } } public class StoreController : BaseController { public string Index() { return "Hello from store!"; } } [AttributeUsage(AttributeTargets.Class, Inherited=true, AllowMultiple=true)] public class InheritedRouteAttribute : Attribute, IDirectRouteFactory { public InheritedRouteAttribute(string template) { Template=template; } public string Name { get; set; } public int Order { get; set; } public string Template { get; private set; } public new RouteEntry CreateRoute(DirectRouteFactoryContext context) { // context.Actions will always contain at least one action - and all of the // actions will always belong to the same controller. var controllerDescriptor=context.Actions.First().ControllerDescriptor; var template=Template.Replace("{controller}", controllerDescriptor.ControllerName); IDirectRouteBuilder builder=context.CreateBuilder(template); builder.Name=Name; builder.Order=Order; return builder.Build(); } } // Custom direct route provider which looks for route attributes of type // InheritedRouteAttribute and also supports attribute route inheritance. public class InheritedDirectRouteProvider : DefaultDirectRouteProvider { protected override IReadOnlyList<IDirectRouteFactory> GetControllerRouteFactories(ControllerDescriptor controllerDescriptor) { return controllerDescriptor .GetCustomAttributes(typeof(InheritedRouteAttribute), inherit: true) .Cast<IDirectRouteFactory>() .ToArray(); } }
Öznitelik yolları için otomatik olarak yol adları oluşturun.
protected override IReadOnlyList<IDirectRouteFactory> GetActionRouteFactories(ActionDescriptor actionDescriptor) { // Get all the route attributes decorated directly on the actions IReadOnlyList<IDirectRouteFactory> actionRouteFactories=base.GetActionRouteFactories(actionDescriptor); // Check if the route attribute on each action already has a route name and if no, // generate a route name automatically // based on the convention: <ControllerName>_<ActionName> (ex: Customers_GetById) foreach (IDirectRouteFactory routeFactory in actionRouteFactories) { RouteAttribute routeAttr=routeFactory as RouteAttribute; if (string.IsNullOrEmpty(routeAttr.Name)) { routeAttr.Name=actionDescriptor.ControllerDescriptor.ControllerName + "_" + actionDescriptor.ActionName; } } return actionRouteFactories; } protected override IReadOnlyList<IDirectRouteFactory> GetControllerRouteFactories(ControllerDescriptor controllerDescriptor) { // Get all the route attributes decorated directly on the controllers IReadOnlyList<IDirectRouteFactory> controllerRouteFactories=base.GetControllerRouteFactories(controllerDescriptor); // Check if the route attribute on each controller already has a route name and if no, // generate a route name automatically // based on the convention: <ControllerName>Route (ex: CustomersRoute) foreach (IDirectRouteFactory routeFactory in controllerRouteFactories) { RouteAttribute routeAttr=routeFactory as RouteAttribute; if (string.IsNullOrEmpty(routeAttr.Name)) { routeAttr.Name=controllerDescriptor.ControllerName + "Route"; } } return controllerRouteFactories; }
Rotalar yol tablosuna eklenmeden önce yol ön eklerini tek bir merkezi yerde değiştirin.
Öznitelik yönlendirmesinin aramasını istediğiniz denetleyicileri filtreleyin. Yakında 3 ve 4'te blog yazmayı umuyoruz.
Değiştirilen API yüzeyi için Facebook düzeltmeler
MVC Facebook paketi, Facebook tarafından yapılan birkaç API değişikliği nedeniyle bozuldu. Bu sorunları çözmek için yeni bir Facebook paketi (Microsoft.AspNet.Facebook 1.0.0) da yayınlıyoruz.
Bilinen Sorunlar ve Hataya Neden Olan Değişiklikler
MVC/Web API'sini 5.2.0 paketleriyle bir projeye iskeleye almak, projede henüz mevcut olmayanlar için 5.1.2 paketleriyle sonuçlanmıştır
ASP.NET MVC 5.2.0 için NuGet paketlerinin güncelleştirilmesi, ASP.NET yapı iskelesi veya ASP.NET Web Uygulaması proje şablonu gibi Visual Studio araçlarını güncelleştirmez. ASP.NET çalışma zamanı paketlerinin önceki sürümünü kullanırlar (örneğin, Güncelleştirme 2'de 5.1.2). Sonuç olarak, ASP.NET yapı iskelesi, projelerinizde mevcut değilse gerekli paketlerin önceki sürümünü (güncelleştirme 2'de 5.1.2 gibi) yükler. Ancak, Visual Studio 2013 RTM veya Güncelleştirme 1'deki ASP.NET yapı iskelesi, projelerinizdeki en son paketlerin üzerine yazılmaz. Projelerinizin paketlerini Web API 2.2 veya ASP.NET MVC 5.2'ye güncelleştirdikten sonra ASP.NET yapı iskelesi kullanıyorsanız, Web API'sinin ve ASP.NET MVC sürümlerinin tutarlı olduğundan emin olun.
Microsoft.jQuery.Unobtrusive.Validation NuGet paketi yüklemesi, jQuery 1.4.1 ile uyumlu microsoft.jQuery.Unobtrusive.Validation sürümünü bulamadığından başarısız oluyor
Microsoft.jQuery.Unobtrusive.Validation için jQuery >=1.8 ve jQuery.Validation >=1.8 gerekir. Ancak jQuery.Validation (1.8) için jQuery (≥ 1.3.2 && ≤ 1.6) gerekir. Bu nedenle, NuGet JQuery 1.8 ve jQuery.Validation 1.8'i aynı anda yüklediğinde başarısız olur. Bu sorunu gördüğünüzde jQuery.Validation >sürümünü = 1.8.0.1 olarak güncelleştirebilirsiniz. Bu sürümde önce jQuery üst sınırı düzeltilmiştir. Microsoft.jQuery.Unobtrusive.Validation'ı yükleyebilmeniz gerekir.
Jquery. Nuget paketi sürüm 1.13.0 doğrulama bazı uluslararası e-posta adreslerini tanımıyor
jQuery.Validation nuget paketi sürüm 1.11.1, geçerli e-posta adreslerini izleyen bilinen son sürümdür. Sonraki sürümler bunları tanıyamayabilir. Örnek:
E-posta Adresi Uluslararasılaştırma (EAI) standardı (örn. 用户@domain.com)
EAI + Uluslararası Kaynak Tanımlayıcıları (IRI) (örn., 用户@домен.рф)
Sorun şu konumda bildirilir: https://github.com/jzaefferer/jquery-validation/issues/1222
Visual Studio 2013'da Razor Görünümleri için Söz Dizimi Vurgulama
Visual Studio 2013 güncelleştirmeden ASP.NET MVC 5.2'ye güncelleştirirseniz, Razor görünümlerini düzenlerken söz dizimi vurgulama için Visual Studio düzenleyicisi desteği alamazsınız. Bu desteği almak için Visual Studio 2013 güncelleştirmeniz gerekir.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin