다음을 통해 공유


ASP.NET MVC 5.1의 새로운 기능

작성자: Microsoft

이 항목에서는 ASP.NET Web MVC 5.1의 새로운 사항에 대해 설명합니다.

소프트웨어 요구 사항

다운로드

런타임 기능은 NuGet 갤러리에서 NuGet 패키지로 릴리스됩니다. 모든 런타임 패키지는 의미 체계 버전 관리 사양을 따릅니다. 최신 ASP.NET MVC 5.1 RTM 패키지의 버전은 "5.1.2"입니다. NuGet을 통해 이러한 패키지를 설치하거나 업데이트할 수 있습니다. 릴리스에는 NuGet의 해당 지역화된 패키지도 포함되어 있습니다.

NuGet 패키지 관리자 콘솔을 사용하여 릴리스된 NuGet 패키지를 설치하거나 업데이트할 수 있습니다.

Install-Package Microsoft.AspNet.Mvc -Version 5.1.2

설명서

ASP.NET MVC 5.1 RTM에 대한 자습서 및 기타 정보는 ASP.NET 웹 사이트( https://www.asp.net)에서 확인할 수 있습니다.

ASP.NET MVC 5.1의 새로운 기능

특성 라우팅 개선 사항

특성 라우팅은 이제 제약 조건을 지원하여 버전 관리 및 헤더 기반 경로 선택을 사용하도록 설정합니다. 특성 경로의 많은 측면은 이제 인터페이스 및 RouteFactoryAttribute 클래스를 IDirectRouteFactory 통해 사용자 지정할 수 있습니다. 이제 경로 접두사는 인터페이스 및 RoutePrefixAttribute 클래스를 IRoutePrefix 통해 확장할 수 있습니다.

뷰의 열거형 지원

  1. 새로운 @Html.EnumDropDownListFor() 도우미 메서드. 식이 열거형 형식 또는 열거형 형식인 Nullable<T>로 평가해야 한다는 주의 사항이 있는 T 대부분의 HTML 도우미처럼 사용해야 합니다. 를 사용하여 EnumHelper.IsValidForEnumHelper() 이러한 요구 사항을 검사.
  2. 를 반환하는 새 EnumHelper.GetSelectList() 메서드입니다 IList<SelectListItem>. 이 기능은 를 호출 @Html.DropDownListFor()하기 전에 선택 목록을 조작해야 하거나 표시되는 이름을 @Html.EnumDropDownListFor() 표시하려는 경우에 유용합니다.

다음 코드에서는 이러한 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)) { … }
}

여기에서 전체 예제를 볼 수 있습니다.

편집기 템플릿에 대한 부트스트랩 지원

이제 EditorFor 에서 HTML 특성을 익명 개체로 전달할 수 있습니다.

예:

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

MinLengthAttribute 및 MaxLengthAttribute에 대한 눈에 거슬리지 않는 유효성 검사

이제 MinLengthMaxLength 특성으로 데코레이트된 속성에 대해 문자열 및 배열 형식에 대한 클라이언트 쪽 유효성 검사가 지원됩니다.

눈에 거슬리지 않는 Ajax에서 'this' 컨텍스트 지원

콜백 함수(OnBegin, OnComplete, OnFailure, OnSuccess)는 이제 컨텍스트를 통해 this 호출 요소를 찾을 수 있습니다. 예:

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

알려진 문제 및 호환성이 손상되는 변경

특성 라우팅

특성 라우팅 일치의 모호성은 이제 첫 번째 일치 항목을 선택하는 대신 오류를 보고합니다.

특성 경로는 매개 변수를 {controller} 사용하고 작업에 배치된 경로에서 매개 변수를 {action} 사용할 수 없습니다. 이러한 매개 변수를 사용하면 모호성이 발생할 가능성이 매우 높습니다.

MVC/Web API를 5.1 패키지가 있는 프로젝트로 스캐폴딩하면 프로젝트에 아직 없는 패키지에 대해 5.0개의 패키지가 생성됩니다.

ASP.NET MVC 5.1 RTM에 대한 NuGet 패키지를 업데이트해도 ASP.NET 스캐폴딩 또는 ASP.NET 웹 애플리케이션 프로젝트 템플릿과 같은 Visual Studio 도구는 업데이트되지 않습니다. 이전 버전의 ASP.NET 런타임 패키지(5.0.0.0)를 사용합니다. 따라서 ASP.NET 스캐폴딩은 프로젝트에서 아직 사용할 수 없는 경우 필요한 패키지의 이전 버전(5.0.0.0)을 설치합니다. 그러나 Visual Studio 2013 RTM 또는 업데이트 1의 ASP.NET 스캐폴딩은 프로젝트의 최신 패키지를 덮어쓰지 않습니다. 프로젝트의 패키지를 Web API 2.1 또는 ASP.NET MVC 5.1로 업데이트한 후 ASP.NET 스캐폴딩을 사용하는 경우 Web API 및 ASP.NET MVC 버전이 일관되는지 확인합니다.

Visual Studio 2013 Razor 뷰에 대한 구문 강조 표시

Visual Studio 2013 업데이트하지 않고 MVC 5.1 RTM을 ASP.NET 업데이트하는 경우 Razor 보기를 편집하는 동안 구문 강조 표시에 대한 Visual Studio 편집기 지원이 제공되지 않습니다. 이 지원을 받으려면 Visual Studio 2013 업데이트해야 합니다.

형식 이름 바꾸기

특성 라우팅 확장성에 사용되는 일부 형식은 5.1 RTM에서 이름이 바뀝니다.

이전 형식 이름(5.1 RC) 새 형식 이름(5.1 RTM)
IDirectRouteProvider IDirectRouteFactory
RouteProviderAttribute RouteFactoryAttribute
DirectRouteProviderContext DirectRouteFactoryContext