Condividi tramite


Novità di ASP.NET MVC 5.1

di Microsoft

Questo argomento descrive le novità di ASP.NET Web MVC 5.1.

Requisiti software

Scarica

Le funzionalità di runtime vengono rilasciate come pacchetti NuGet nella raccolta NuGet. Tutti i pacchetti di runtime seguono la specifica del controllo delle versioni semantiche . La versione più recente ASP.NET pacchetto MVC 5.1 RTM è la seguente: "5.1.2". È possibile installare o aggiornare questi pacchetti tramite NuGet. La versione include anche i pacchetti localizzati corrispondenti in NuGet.

È possibile installare o aggiornare i pacchetti NuGet rilasciati usando la console di Gestione pacchetti NuGet:

Install-Package Microsoft.AspNet.Mvc -Version 5.1.2

Documentazione

Le esercitazioni e altre informazioni su ASP.NET MVC 5.1 RTM sono disponibili nel sito Web ASP.NET ( https://www.asp.net).

Nuove funzionalità in ASP.NET MVC 5.1

Miglioramenti del routing degli attributi

Il routing degli attributi supporta ora i vincoli, abilitando il controllo delle versioni e la selezione della route basata su intestazione. Molti aspetti delle route degli attributi sono ora personalizzabili tramite l'interfaccia e RouteFactoryAttribute la IDirectRouteFactory classe . Il prefisso di route è ora estendibile tramite l'interfaccia e RoutePrefixAttribute la IRoutePrefix classe .

Supporto delle enumerazioni nelle visualizzazioni

  1. Nuovi @Html.EnumDropDownListFor() metodi helper. Devono essere usati come la maggior parte degli helper HTML con l'avvertenza che l'espressione deve restituire un tipo enum o un tipo Nullable<T> dove T è un tipo enum . Usare EnumHelper.IsValidForEnumHelper() per verificare questi requisiti.
  2. Nuovi EnumHelper.GetSelectList() metodi che restituiscono un oggetto IList<SelectListItem>. Ciò è utile quando è necessario modificare un elenco di selezione prima di chiamare, @Html.DropDownListFor()ad esempio , o quando si desidera visualizzare i nomi visualizzati @Html.EnumDropDownListFor() .

Il codice seguente illustra queste API.

@if (EnumHelper.IsValidForEnumHelper(ViewData.ModelMetadata))
{
    @Html.EnumDropDownListFor(model => model, htmlAttributes: new { @class = "form-control" })
}
@if (EnumHelper.IsValidForEnumHelper(ViewData.ModelMetadata))
{
    foreach (SelectListItem item in EnumHelper.GetSelectList(ViewData.ModelMetadata,
(Enum)Model)) { … }
}

Un esempio completo è disponibile qui.

Supporto bootstrap per i modelli di editor

È ora possibile passare gli attributi HTML in EditorFor come oggetto anonimo.

Ad esempio:

@Html.EditorFor(model => model, new { htmlAttributes = new { @class = "form-control" }, })

Convalida non invasiva per MinLengthAttribute e MaxLengthAttribute

La convalida lato client per i tipi stringa e matrice sarà ora supportata per le proprietà decorate con gli attributi MinLength e MaxLength .

Supporto del contesto "this" in Unbtrusive Ajax

Le funzioni di callback (OnBegin, OnComplete, OnFailure, OnSuccess) saranno ora in grado di individuare l'elemento che richiama tramite il this contesto. Ad esempio:

@Ajax.ActionLink("Click me", "AjaxAction", new AjaxOptions { UpdateTargetId = "foo", OnBegin = "OnClick" })

<script>
    function OnClick(jqXHR) {
        if ($(this).hasClass("foo")) {
            jqXHR.setRequestHeader("custom-header", "value");
        }
    }
</script>

Problemi noti e modifiche di rilievo

Routing degli attributi

Le ambiguità nelle corrispondenze di routing degli attributi segnalano ora un errore anziché scegliere la prima corrispondenza.

Le route degli attributi non sono consentite di usare il {controller} parametro e di usare il {action} parametro nelle route inserite nelle azioni. L'uso di questi parametri probabilmente causerebbe ambiguità.

Lo scaffolding dell'API MVC/Web in un progetto con pacchetti 5.1 genera pacchetti 5.0 per quelli che non esistono già nel progetto

L'aggiornamento dei pacchetti NuGet per ASP.NET MVC 5.1 RTM non aggiorna gli strumenti di Visual Studio, ad esempio ASP.NET lo scaffolding o il modello di progetto applicazione Web ASP.NET. Usano la versione precedente dei pacchetti di runtime ASP.NET (5.0.0.0). Di conseguenza, il ASP.NET scaffolding installerà la versione precedente (5.0.0.0) dei pacchetti necessari, se non sono già disponibili nei progetti. Tuttavia, lo scaffolding ASP.NET in Visual Studio 2013 RTM o Update 1 non sovrascrive i pacchetti più recenti nei progetti. Se si usa ASP.NET scaffolding dopo aver aggiornato i pacchetti dei progetti all'API Web 2.1 o ASP.NET MVC 5.1, assicurarsi che le versioni dell'API Web e ASP.NET MVC siano coerenti.

Evidenziazione della sintassi per le visualizzazioni Razor in Visual Studio 2013

Se si esegue l'aggiornamento a ASP.NET MVC 5.1 RTM senza aggiornare Visual Studio 2013, non si otterrà il supporto dell'editor di Visual Studio per l'evidenziazione della sintassi durante la modifica delle visualizzazioni Razor. È necessario aggiornare Visual Studio 2013 per ottenere questo supporto.

Ridenominazione dei tipi

Alcuni dei tipi usati per l'estendibilità del routing degli attributi vengono rinominati in 5.1 RTM.

Nome tipo precedente (5.1 RC) Nome nuovo tipo (5.1 RTM)
IDirectRouteProvider IDirectRouteFactory
RouteProviderAttribute RouteFactoryAttribute
DirectRouteProviderContext DirectRouteFactoryContext