Novità di ASP.NET MVC 5.1
di Microsoft
Questo argomento descrive le novità di ASP.NET Web MVC 5.1.
Requisiti software
- Visual Studio 2012: scaricare ASP.NET and Web Tools 2013.1 per Visual Studio 2012.
- Visual Studio 2013: scaricare Visual Studio 2013 Update 1. Questo aggiornamento è necessario per la modifica ASP.NET visualizzazioni Razor MVC 5.1.
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
- 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> doveT
è un tipo enum . UsareEnumHelper.IsValidForEnumHelper()
per verificare questi requisiti. - Nuovi
EnumHelper.GetSelectList()
metodi che restituiscono un oggettoIList<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 |