Udostępnij za pośrednictwem


Co nowego we wzorcu ASP.NET MVC 5.1

autor: Microsoft

W tym temacie opisano nowości w ASP.NET Web MVC 5.1.

Wymagania programowe

Pobierz

Funkcje środowiska uruchomieniowego są wydawane jako pakiety NuGet w galerii NuGet. Wszystkie pakiety środowiska uruchomieniowego są zgodne ze specyfikacją semantycznego przechowywania wersji . Najnowszy pakiet ASP.NET MVC 5.1 RTM ma następującą wersję: "5.1.2". Te pakiety można instalować lub aktualizować za pomocą narzędzia NuGet. Wydanie zawiera również odpowiednie zlokalizowane pakiety w programie NuGet.

Możesz zainstalować lub zaktualizować wydane pakiety NuGet przy użyciu konsoli Menedżera pakietów NuGet:

Install-Package Microsoft.AspNet.Mvc -Version 5.1.2

Dokumentacja

Samouczki i inne informacje o ASP.NET MVC 5.1 RTM są dostępne w witrynie internetowej ASP.NET ( https://www.asp.net).

Nowe funkcje w ASP.NET MVC 5.1

Ulepszenia routingu atrybutów

Routing atrybutów obsługuje teraz ograniczenia, umożliwiając wybór tras opartych na wersji i nagłówku. Wiele aspektów tras atrybutów można teraz dostosowywać za pośrednictwem interfejsu IDirectRouteFactory i RouteFactoryAttribute klasy. Prefiks trasy jest teraz rozszerzalny za pośrednictwem interfejsu IRoutePrefix i RoutePrefixAttribute klasy.

Obsługa wyliczenia w widokach

  1. Nowe @Html.EnumDropDownListFor() metody pomocnicze. Powinny one być używane jak większość pomocników HTML z zastrzeżeniem, że wyrażenie musi być obliczane na typ wyliczenia lub nullable<T> , gdzie T jest typem wyliczenia . Użyj polecenia EnumHelper.IsValidForEnumHelper() , aby sprawdzić te wymagania.
  2. Nowe EnumHelper.GetSelectList() metody, które zwracają wartość IList<SelectListItem>. Jest to przydatne, gdy musisz manipulować listą wyboru przed wywołaniem, na przykład , @Html.DropDownListFor()lub, gdy chcesz wyświetlić nazwy, które @Html.EnumDropDownListFor() są wyświetlane.

Poniższy kod przedstawia te interfejsy 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)) { … }
}

Pełny przykład można zobaczyć tutaj.

Obsługa uruchamiania szablonów edytora

Teraz zezwalamy na przekazywanie atrybutów HTML w pliku EditorFor jako obiektu anonimowego.

Na przykład:

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

Niestrudzone sprawdzanie poprawności atrybutów MinLengthAttribute i MaxLengthAttribute

Walidacja po stronie klienta dla typów ciągów i tablic będzie teraz obsługiwana dla właściwości ozdobionych atrybutami MinLength i MaxLength .

Obsługa kontekstu "this" w unobtrusive Ajax

Funkcje wywołania zwrotnego (OnBegin, OnComplete, OnFailure, OnSuccess) będą teraz mogły zlokalizować element wywołujący this za pośrednictwem kontekstu. Na przykład:

@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>

Znane problemy i zmiany powodujące niezgodność

Routing atrybutów

Niejednoznaczności w dopasowaniach routingu atrybutów będą teraz zgłaszać błąd zamiast wybierać pierwsze dopasowanie.

Trasy atrybutów nie mogą używać parametru {controller} i używać parametru {action} w trasach umieszczonych w akcjach. Użycie tych parametrów najprawdopodobniej doprowadziłoby do niejednoznaczności.

Tworzenie szkieletu wzorca MVC/internetowego interfejsu API w projekcie z pakietami 5.1 powoduje utworzenie 5.0 pakietów dla pakietów, które jeszcze nie istnieją w projekcie

Aktualizowanie pakietów NuGet dla ASP.NET MVC 5.1 RTM nie powoduje zaktualizowania narzędzi programu Visual Studio, takich jak tworzenie szkieletu ASP.NET lub szablon projektu aplikacji internetowej ASP.NET. Używają poprzedniej wersji pakietów środowiska uruchomieniowego ASP.NET (5.0.0.0). W rezultacie szkielet ASP.NET zainstaluje poprzednią wersję (5.0.0.0.0) wymaganych pakietów, jeśli nie są jeszcze dostępne w projektach. Jednak szkielet ASP.NET w Visual Studio 2013 RTM lub Update 1 nie zastępuje najnowszych pakietów w projektach. Jeśli używasz szkieletu ASP.NET po zaktualizowaniu pakietów projektów do internetowego interfejsu API 2.1 lub ASP.NET MVC 5.1, upewnij się, że wersje internetowego interfejsu API i ASP.NET MVC są spójne.

Wyróżnianie składni dla widoków Razor w Visual Studio 2013

W przypadku aktualizacji do wersji ASP.NET MVC 5.1 RTM bez aktualizowania Visual Studio 2013 nie będzie można uzyskać obsługi edytora programu Visual Studio na potrzeby wyróżniania składni podczas edytowania widoków Razor. Aby uzyskać tę pomoc techniczną, musisz zaktualizować Visual Studio 2013.

Zmiany nazw typów

Nazwy niektórych typów używanych do rozszerzalności routingu atrybutów są zmieniane w wersji 5.1 RTM.

Stara nazwa typu (5.1 RC) Nazwa nowego typu (5.1 RTM)
IDirectRouteProvider IDirectRouteFactory
RouteProviderAttribute RouteFactoryAttribute
Obiekt DirectRouteProviderContext DirectRouteFactoryContext