다음을 통해 공유


ASP.NET MVC 2의 새로운 기능

이 문서에서는 ASP.NET MVC 2에 도입된 새로운 기능 및 개선 사항에 대해 설명합니다.

소개
ASP.NET MVC 1.0 프로젝트를 ASP.NET MVC 2로 업그레이드
새 기능
템플릿 도우미
Areas
비동기 컨트롤러 지원
Action-Method 매개 변수의 DefaultValueAttribute 지원
모델 바인더를 사용하여 이진 데이터 바인딩 지원
ModelMetadata 및 ModelMetadataProvider 클래스
DataAnnotations 특성 지원
모델 유효성 검사기 공급자
클라이언트 쪽 유효성 검사
Visual Studio 2010용 새 코드 조각
새 RequireHttpsAttribute 작업 필터
HTTP 메서드 동사 재정의
템플릿 도우미에 대한 새 HiddenInputAttribute 클래스
Html.ValidationSummary 도우미 메서드는 Model-Level 오류를 표시할 수 있습니다.
Visual Studio의 T4 템플릿 .NET Framework API 개선 사항의 대상 버전과 관련된 코드 생성
호환성이 손상되는 변경
고지 사항

소개

ASP.NET MVC 2는 ASP.NET MVC 1.0을 기반으로 하며 생산성 향상에 초점을 맞춘 다양한 향상된 기능 집합을 소개합니다. 이 릴리스는 ASP.NET MVC 1.0과 호환되므로 ASP.NET MVC 1.0에 대한 모든 지식, 기술, 코드 및 확장이 계속 적용됩니다.

ASP.NET MVC에 대한 자세한 내용은 다음 리소스를 참조하세요.

ASP.NET MVC 1.0 프로젝트를 ASP.NET MVC 2로 업그레이드

ASP.NET MVC 2는 동일한 서버에 ASP.NET MVC 1.0과 함께 설치할 수 있으므로 애플리케이션 개발자는 ASP.NET MVC 1.0 애플리케이션을 ASP.NET MVC 2로 업그레이드할 시기를 유연하게 선택할 수 있습니다. 업그레이드하는 방법에 대한 자세한 내용은 ASP.NET MVC 1.0 애플리케이션을 ASP.NET MVC 2로 업그레이드 문서를 참조하세요.

새로운 기능

이 섹션에서는 MVC 2 릴리스에 도입된 기능에 대해 설명합니다.

템플릿 도우미

템플릿 도우미를 사용하면 데이터 형식을 사용하여 편집하고 표시하기 위해 HTML 요소를 자동으로 연결할 수 있습니다. 예를 들어 System.DateTime 형식의 데이터가 보기에 표시되면 날짜 선택기 UI 요소를 자동으로 렌더링할 수 있습니다. 이는 ASP.NET 동적 데이터에서 필드 템플릿이 작동하는 방식과 비슷합니다. 자세한 내용은 템플릿 도우미를 사용하여 MSDN 웹 사이트에 데이터 표시를 참조하세요.

Areas

영역을 사용하면 대규모 웹 애플리케이션의 복잡성을 관리하기 위해 대규모 프로젝트를 여러 더 작은 섹션으로 구성할 수 있습니다. 각 섹션("영역")은 일반적으로 큰 웹 사이트의 별도 섹션을 나타내며 관련 컨트롤러 및 뷰 집합을 그룹화하는 데 사용됩니다. 자세한 내용은 연습: MSDN 웹 사이트에서 영역별로 ASP.NET MVC 애플리케이션 구성 을 참조하세요.

새 영역을 만들려면 솔루션 탐색기 프로젝트를 마우스 오른쪽 단추로 클릭하고 추가를 클릭한 다음 영역을 클릭합니다. 그러면 영역 이름을 묻는 대화 상자가 표시됩니다. 영역 이름을 입력하면 Visual Studio에서 프로젝트에 새 영역을 추가합니다.

다음 그림에서는 관리 및 블로그라는 두 영역이 있는 프로젝트의 예제 레이아웃을 보여 줍니다.

솔루션 탐색기 드롭다운 상자에서 관리 및 블로그의 두 영역이 있는 프로젝트의 예제 레이아웃을 보여 주는 스크린샷

영역을 만들 때 Visual Studio는 AreaRegistration에서 파생된 클래스를 각 영역에 추가합니다. 다음 예제와 같이 영역 및 해당 경로를 등록하려면 이 클래스가 필요합니다.

namespace MyApplication.Areas.Blog {
    public class BlogAreaRegistration : AreaRegistration {
        public override string AreaName {
            get { return "blog"; }
        }

        public override void RegisterArea(AreaRegistrationContext context) {
            context.MapRoute(
                "blog_default",
                "blog/{controller}/{action}/{id}",
                new { action = "Index", id = UrlParameter.Optional }
            );

            context.MapRoute(
                "blog_whatsnew",
                "whats-new",
                new { action = "WhatsNew", id = UrlParameter.Optional  }
            );
        }
    }
}

ASP.NET MVC 2의 기본 프로젝트 템플릿에는 Global.asax 파일의 코드에서 RegisterAllAreas 메서드에 대한 호출이 포함됩니다. 이 메서드는 AreaRegistration 클래스에서 파생되는 모든 형식을 찾고, 형식의 instance 인스턴스화한 다음, instance RegisterArea 메서드를 호출하여 프로젝트의 각 영역을 등록합니다. 다음 예제에서는 이 작업을 수행하는 방법을 보여줍니다.

public class MyMvcApplication : HttpApplication {

    void App_Start() {
        AreaRegistration.RegisterAllAreas();
        RegisterRoutes(RouteTable.Routes);
    }

    public static void RegisterRoutes(RouteCollection routes) {
        routes.MapRoute("default", "{controller}/{action}/{id}", ...);
    }
}

컨텍스트를 호출하여 RegisterArea 메서드에서 네임스페이스를 지정하지 않는 경우 Namespaces.Add 메서드는 등록 클래스의 네임스페이스가 기본적으로 사용됩니다.

비동기 컨트롤러 지원

ASP.NET MVC 2를 사용하면 컨트롤러가 요청을 비동기적으로 처리할 수 있습니다. 이로 인해 차단 작업(예: 네트워크 요청)을 자주 호출하는 서버가 비 차단 대응을 대신 호출할 수 있으므로 성능이 향상됩니다. 자세한 내용은 MSDN의 ASP.NET MVC에서 비동기 컨트롤러 사용 항목을 참조하세요.

Action-Method 매개 변수의 DefaultValueAttribute 지원

System.ComponentModel.DefaultValueAttribute 클래스를 사용하면 인수 매개 변수에 대한 기본값을 작업 메서드에 제공할 수 있습니다. 예를 들어 다음 기본 경로가 정의되어 있다고 가정합니다.

{controller}/{action}/{id}

또한 다음 컨트롤러 및 작업 메서드가 정의되어 있다고 가정합니다.

public class ArticleController {
    public ActionResult View(int id, [DefaultValue(1)]int page) {
    }
}

다음 요청 URL 중 하나는 앞의 예제에 정의된 View 작업 메서드를 호출합니다.

  • /Article/View/123
  • /Article/View/123?page=1(이전 요청과 사실상 동일)
  • /Article/View/123?page=2

DefaultValueAttribute 특성이 없으면 페이지 인수가 값을 제공하지 않은 nullable이 아닌 값 형식이므로 이전 목록의 첫 번째 URL이 작동하지 않습니다.

코드가 Visual Basic 2010 또는 Visual C# 2010으로 작성된 경우 다음 예제와 같이 DefaultValueAttribute 특성 대신 선택적 매개 변수를 사용할 수 있습니다.

Function View(ByVal id As Integer, Optional ByVal page As Integer = 1) _
        As ActionResult
    ' ...
End Function

public ActionResult MyAction(int id, int page = 1) {
    // ...
}

모델 바인더를 사용하여 이진 데이터 바인딩 지원

이진 값을 base-64로 인코딩된 문자열로 인코딩하는 Html.Hidden 도우미의 두 가지 새로운 오버로드가 있습니다.

public static string Hidden(this HtmlHelper htmlHelper, string name, Binary value);

public static string Hidden(this HtmlHelper htmlHelper, string name, byte[] value);

일반적으로 뷰에 개체에 대한 타임스탬프를 포함하는 것이 일반적입니다. 예를 들어 애플리케이션에는 다음 Product 개체가 포함될 수 있습니다.

public class Product {
    //... other properties ...	
    public byte[] TimeStamp {
        get;
        set;
    }
}

편집 폼은 다음 예제와 같이 폼에서 TimeStamp 속성을 렌더링할 수 있습니다.

<%@ Page Inherits="ViewPage<Product>" %>
<%= Html.Hidden("TimeStamp", Model.TimeStamp) %>

이 태그는 타임스탬프 값이 있는 숨겨진 입력 요소를 다음 예제와 유사한 base-64로 인코딩된 문자열로 렌더링합니다.

<input type="hidden" name="TimeStamp" value="QVNQLk5FVCBNVkMgaXMgZnVuIQ==" />

이 양식은 다음 예제와 같이 Product 형식의 인수가 있는 작업 메서드에 게시될 수 있습니다.

public ActionResult Edit(Product p) {
    // p.TimeStamp is populated from the form
}

게시된 base-64로 인코딩된 문자열이 바이트 배열로 변환되므로 작업 메서드에서 TimeStamp 속성이 올바르게 채워집니다.

ModelMetadata 및 ModelMetadataProvider 클래스

ModelMetadataProvider 클래스는 보기 내에서 모델에 대한 메타데이터를 가져오기 위한 추상화 기능을 제공합니다. MVC 2에는 System.ComponentModel.DataAnnotations 네임스페이스의 특성에 의해 노출되는 메타데이터를 사용할 수 있도록 하는 기본 공급자가 포함되어 있습니다. 데이터베이스 또는 XML 파일과 같은 다른 데이터 저장소에서 메타데이터를 제공하는 메타데이터 공급자를 만들 수 있습니다.

ViewDataDictionary 클래스는 ModelMetadataProvider 클래스에 의해 모델에서 추출된 메타데이터를 포함하는 ModelMetadata 개체를 노출합니다. 이렇게 하면 템플릿 도우미가 이 메타데이터를 사용하고 그에 따라 출력을 조정할 수 있습니다.

자세한 내용은 ModelMetadata 및 ModelMetadataProvider 클래스에 대한 설명서를 참조하세요.

DataAnnotations 특성 지원

ASP.NET MVC 2는 입력 유효성 검사를 제공하기 위해 모델에 바인딩할 때 RangeAttribute, RequiredAttribute, StringLengthAttribute 및 RegexAttribute 유효성 검사 특성(System.ComponentModel.DataAnnotations 네임스페이스에 정의됨)을 사용하도록 지원합니다.

자세한 내용은 방법: MSDN 웹 사이트에서 DataAnnotations 특성을 사용하여 모델 데이터 유효성 검사를 참조하세요. 이러한 특성의 사용을 보여 주는 샘플 프로젝트는 에서 https://go.microsoft.com/fwlink/?LinkId=157753다운로드할 수 있습니다.

Model-Validator 공급자

모델 유효성 검사 공급자 클래스는 모델에 대한 유효성 검사 논리를 제공하는 추상화를 나타냅니다. ASP.NET MVC에는 System.ComponentModel.DataAnnotations 네임스페이스에 포함된 유효성 검사 특성을 기반으로 하는 기본 공급자가 포함되어 있습니다. 사용자 지정 유효성 검사 규칙 및 모델에 대한 유효성 검사 규칙의 사용자 지정 매핑을 정의하는 고유한 유효성 검사 공급자를 만들 수도 있습니다. 자세한 내용은 ModelValidatorProvider 클래스에 대한 설명서를 참조하세요.

Client-Side 유효성 검사

모델 유효성 검사기 공급자 클래스는 클라이언트 쪽 유효성 검사 라이브러리에서 사용할 수 있는 JSON 직렬화된 데이터의 형태로 유효성 검사 메타데이터를 브라우저에 노출합니다. ASP.NET MVC 2에는 앞에서 설명한 DataAnnotations 네임스페이스 유효성 검사 특성을 지원하는 클라이언트 유효성 검사 라이브러리 및 어댑터가 포함되어 있습니다. 공급자 클래스를 사용하면 JSON 데이터를 처리하고 대체 라이브러리를 호출하는 어댑터를 작성하여 다른 클라이언트 유효성 검사 라이브러리를 사용할 수도 있습니다.

Visual Studio 2010용 새 코드 조각

ASP.NET MVC 2에 대한 HTML 코드 조각 집합은 Visual Studio 2010과 함께 설치됩니다. 이러한 코드 조각 목록을 보려면 도구 메뉴에서 코드 조각 관리자를 선택합니다. 언어에 대해 HTML을 선택하고 위치에 대해 MVC 2를 ASP.NET 선택합니다. 코드 조각을 사용하는 방법에 대한 자세한 내용은 Visual Studio 설명서를 참조하세요.

새 RequireHttpsAttribute 작업 필터

ASP.NET MVC 2에는 작업 메서드 및 컨트롤러에 적용할 수 있는 새 RequireHttpsAttribute 클래스가 포함되어 있습니다. 기본적으로 필터는 비 SSL(HTTP) 요청을 해당하는 SSL 사용(HTTPS)으로 리디렉션합니다.

HTTP 메서드 동사 재정의

REST 아키텍처 스타일을 사용하여 웹 사이트를 빌드하는 경우 HTTP 동사를 사용하여 리소스에 대해 수행할 작업을 결정합니다. REST를 사용하려면 애플리케이션이 GET, PUT, POST 및 DELETE를 비롯한 일반적인 HTTP 동사의 전체 범위를 지원해야 합니다.

ASP.NET MVC 2에는 작업 메서드에 적용할 수 있는 새로운 특성과 컴팩트한 구문이 포함되어 있습니다. 이러한 특성을 사용하면 ASP.NET MVC가 HTTP 동사를 기반으로 작업 메서드를 선택할 수 있습니다. 다음 예제에서 POST 요청은 첫 번째 작업 메서드를 호출하고 PUT 요청은 두 번째 작업 메서드를 호출합니다.

[HttpPost]
public ActionResult Edit(int id)

[HttpPut]
public ActionResult Edit(int id, Tag tag)

이전 버전의 ASP.NET MVC에서는 다음 예제와 같이 이러한 작업 메서드에 더 자세한 구문이 필요했습니다.

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult Edit(int id) 

[AcceptVerbs(HttpVerbs.Put)] 
public ActionResult Edit(int id, Tag tag)

브라우저는 GET 및 POST HTTP 동사만 지원하므로 다른 동사가 필요한 작업에 게시할 수 없습니다. 따라서 모든 RESTful 요청을 기본적으로 지원할 수 없습니다.

그러나 POST 작업 중에 RESTful 요청을 지원하기 위해 ASP.NET MVC 2에는 새로운 HttpMethodOverride HTML 도우미 메서드가 도입되었습니다. 이 메서드는 양식이 HTTP 메서드를 효과적으로 에뮬레이트하도록 하는 숨겨진 입력 요소를 렌더링합니다. 예를 들어 HttpMethodOverride HTML 도우미 메서드를 사용하면 양식 제출이 PUT 또는 DELETE 요청으로 표시되도록 할 수 있습니다. HttpMethodOverride의 동작은 다음 특성에 영향을 줍니다.

  • HttpPostAttribute
  • HttpPutAttribute
  • HttpGetAttribute
  • HttpDeleteAttribute
  • AcceptVerbsAttribute

숨겨진 입력 요소의 이름은 X-HTTP-Method-Override이고 해당 값은 에뮬레이트할 HTTP 동사로 설정됩니다. 재정의 값은 HTTP 헤더 또는 쿼리 문자열 값에서 이름/값 쌍으로 지정할 수도 있습니다.

재정의는 실제 요청이 POST 요청인 경우에만 사용할 수 있습니다. 다른 HTTP 동사를 사용하는 요청에 대해서는 재정의 값이 무시됩니다.

템플릿 도우미에 대한 새 HiddenInputAttribute 클래스

새 HiddenInputAttribute 특성을 model 속성에 적용하여 편집기 템플릿에 모델을 표시할 때 숨겨진 입력 요소를 렌더링해야 하는지 여부를 나타낼 수 있습니다. (특성은 HiddenInput의 암시적 UIHint 값을 설정합니다.) 특성의 DisplayValue 속성을 사용하면 값이 편집기 및 디스플레이 모드로 표시되는지 여부를 지정할 수 있습니다. DisplayValue를 false로 설정하면 일반적으로 필드를 둘러싸는 HTML 태그도 표시되지 않습니다. DisplayValue의 기본값은 true입니다.

다음 시나리오에서는 HiddenInputAttribute 특성을 사용할 수 있습니다.

  • 뷰를 사용하면 사용자가 개체의 ID를 편집할 수 있으며 값을 표시하고 이전 ID가 포함된 숨겨진 입력 요소를 제공하여 컨트롤러에 다시 전달할 수 있도록 해야 합니다.
  • 뷰를 사용하면 타임스탬프 속성과 같이 표시되지 않아야 하는 이진 속성을 편집할 수 있습니다. 이 경우 값 및 주변 HTML 태그(예: 레이블 및 값)가 표시되지 않습니다.

다음 예제에서는 HiddenInputAttribute 클래스를 사용하는 방법을 보여줍니다.

public class ProductViewModel {
    [HiddenInput] // equivalent to [HiddenInput(DisplayValue=true)]
    public int Id { get; set; }

    public string Name { get; set; }

    [HiddenInput(DisplayValue=false)]
    public byte[] TimeStamp { get; set; }
}

특성이 true로 설정되거나 매개 변수가 지정되지 않은 경우 다음이 발생합니다.

  • 표시 템플릿에서 레이블이 렌더링되고 값이 사용자에게 표시됩니다.
  • 편집기 템플릿에서 레이블이 렌더링되고 값이 숨겨진 입력 요소에 렌더링됩니다.

특성이 false로 설정되면 다음이 발생합니다.

  • 표시 템플릿에서는 해당 필드에 대해 렌더링되지 않습니다.
  • 편집기 템플릿에서는 레이블이 렌더링되지 않고 값이 숨겨진 입력 요소에 렌더링됩니다.

Html.ValidationSummary 도우미 메서드는 Model-Level 오류를 표시할 수 있습니다.

모든 유효성 검사 오류를 항상 표시하는 대신 Html.ValidationSummary 도우미 메서드에는 모델 수준 오류만 표시하는 새로운 옵션이 있습니다. 이렇게 하면 유효성 검사 요약에 모델 수준 오류를 표시하고 각 필드 옆에 필드별 오류를 표시할 수 있습니다.

Visual Studio의 T4 템플릿 .NET Framework 대상 버전과 관련된 코드 생성

애플리케이션에서 사용되는 .NET Framework 버전을 지정하는 ASP.NET MVC T4 호스트의 T4 파일에 새 속성을 사용할 수 있습니다. 이를 통해 T4 템플릿은 .NET Framework 버전과 관련된 코드 및 태그를 생성할 수 있습니다. Visual Studio 2008에서 값은 항상 .NET 3.5입니다. Visual Studio 2010에서 값은 .NET 3.5 또는 .NET 4입니다.

API 개선 사항

이 섹션에서는 기존 ASP.NET MVC 형식 및 멤버의 변경 내용에 대해 설명합니다.

  • Controller 클래스에 보호된 가상 CreateActionInvoker 메서드가 추가되었습니다. 이 메서드는 Controller의 ActionInvoker 속성에 의해 호출되며 호출자가 아직 설정되지 않은 경우 호출자의 지연 인스턴스화를 허용합니다.
  • AuthorizeAttribute 클래스에 보호된 가상 HandleUnauthorizedRequest 메서드가 추가되었습니다. 이렇게 하면 AuthorizeAttribute에서 파생된 필터가 권한 부여가 실패할 때 동작을 제어할 수 있습니다.
  • ValueProviderDictionary 클래스에 Add(문자열 키, 개체 값) 메서드가 추가되었습니다. 이렇게 하면 다음 예제와 같이 ValueProviderDictionary에 대한 사전 이니셜라이저 구문을 사용할 수 있습니다.
Controller c = new MyController();
c.ValueProvider = new ValueProviderDictionary(null) {
    { "example1", "example1Value" },
    { "example2", "example2Value" },
    { "example3", new int[] { 1, 2, 3 } }
};
  • Sys.Mvc.AjaxContext 클래스에 get_object 메서드가 추가되었습니다. 이 메서드는 get_data 메서드와 유사하지만 응답의 콘텐츠 형식이 application/json인 경우 get_object JSON 개체를 반환합니다.
  • AuthorizationContext 클래스에 ActionDescriptor 속성이 추가되었습니다.
  • 양식 게시물에 속성이 없을 때 ID 속성이 포함된 모델에 바인딩할 때 문제를 해결하는 데 사용할 수 있는 UrlParameter.Optional 토큰이 추가되었습니다. 자세한 내용은 Phil Haack의 블로그에서 MVC 2 선택적 URL 매개 변수 ASP.NET 항목을 참조하세요.

주요 변경 내용

다음 변경으로 인해 기존 ASP.NET MVC 1.0 애플리케이션에서 오류가 발생할 수 있습니다.

IDataErrorInfo를 구현하는 클래스의 속성 유효성 검사 동작 변경

IDataErrorInfo를 사용하여 유효성 검사를 수행하는 모델 개체의 경우 새 값이 설정되었는지 여부에 관계없이 모든 속성의 유효성이 검사됩니다. ASP.NET MVC 1.0에서는 새 값이 설정된 속성만 유효성을 검사했습니다. ASP.NET MVC 2에서는 모든 속성 유효성 검사기가 성공한 경우에만 IDataErrorInfo의 Error 속성이 호출됩니다.

IIS 스크립트 매핑 스크립트는 설치 관리자에서 더 이상 사용할 수 없습니다.

IIS 스크립트 매핑 스크립트는 클래식 모드에서 IIS 6 및 IIS 7에 대한 스크립트 맵을 구성하는 데 사용되는 명령줄 스크립트입니다. Visual Studio 개발 서버를 사용하거나 통합 모드에서 IIS 7을 사용하는 경우 스크립트 매핑 스크립트가 필요하지 않습니다. 스크립트는 ASP.NET WebStack에서 지원되지 않는 별도의 다운로드로 사용할 수 있습니다.

MVC Futures의 Html.Substitute 도우미 메서드를 더 이상 사용할 수 없습니다.

MVC 뷰 엔진의 렌더링 동작이 변경되어 Html.Substitute 도우미 메서드가 작동하지 않고 제거되었습니다.

IValueProvider 인터페이스는 IDictionary의 모든 사용을 대체합니다.

MVC 1.0에서 IDictionary를 수락한 모든 속성 또는 메서드 인수는 이제 IValueProvider를 허용합니다. 이 변경 내용은 사용자 지정 값 공급자 또는 사용자 지정 모델 바인더를 포함하는 애플리케이션에만 영향을 줍니다. 이 변경의 영향을 받는 속성 및 메서드의 예는 다음과 같습니다.

  • ControllerBase 및 ModelBindingContext 클래스의 ValueProvider 속성입니다.
  • Controller 클래스의 TryUpdateModel 메서드입니다.

Site.css 파일에 새 CSS 클래스가 추가되었습니다.

ASP.NET MVC 프로젝트 템플릿의 Site.css 파일이 유효성 검사 기능 및 템플릿 도우미에서 사용하는 새 스타일을 포함하도록 업데이트되었습니다.

이제 도우미가 MvcHtmlString 개체를 반환합니다.

ASP.NET 4에서 새 HTML 인코딩 식 구문을 활용하기 위해 HTML 도우미의 반환 형식은 이제 문자열 대신 MvcHtmlString입니다. ASP.NET 3.5에서 ASP.NET MVC 2 및 새 도우미를 사용하는 경우 HTML 인코딩 구문을 활용할 수 없습니다. 새 구문은 ASP.NET 4에서 ASP.NET MVC 2를 실행하는 경우에만 사용할 수 있습니다.

JsonResult는 이제 HTTP POST 요청에만 응답합니다.

기본적으로 정보 공개 가능성이 있는 JSON 하이재킹 공격을 완화하기 위해 JsonResult 클래스는 이제 HTTP POST 요청에만 응답합니다. JsonResult 개체를 반환하는 작업 메서드에 대한 Ajax GET 호출은 POST를 대신 사용하도록 변경해야 합니다. 필요한 경우 JsonResult의 새 JsonRequestBehavior 속성을 설정하여 이 동작을 재정의할 수 있습니다. 잠재적인 악용에 대 한 자세한 내용은 참조 하세요. 블로그 게시물 JSON 하이재킹 에 Phil Haack의 블로그.

ModelBindingContext의 Model 및 ModelType 속성 setter는 사용되지 않습니다.

새 settable ModelMetadata 속성이 ModelBindingContext 클래스에 추가되었습니다. 새 속성은 Model 및 ModelType 속성을 모두 캡슐화합니다. Model 및 ModelType 속성은 사용되지 않지만 이전 버전과의 호환성을 위해 속성 getter는 여전히 작동합니다. ModelMetadata 속성에 위임하여 값을 검색합니다.

DefaultControllerFactory 클래스에 대한 변경 내용으로 파생되는 사용자 지정 컨트롤러 팩터리 중단

DefaultControllerFactory 클래스는 RequestContext 속성을 제거하여 수정되었습니다. 이 속성 대신 요청 컨텍스트 instance 보호된 가상 GetControllerInstance 및 GetControllerType 메서드에 전달됩니다. 이 변경 내용은 DefaultControllerFactory에서 파생되는 사용자 지정 컨트롤러 팩터리에 영향을 줍니다.

사용자 지정 컨트롤러 팩터리에서는 ASP.NET MVC 애플리케이션에 대한 종속성 주입을 제공하는 데 자주 사용됩니다. ASP.NET MVC 2를 지원하도록 사용자 지정 컨트롤러 팩터리를 업데이트하려면 새 서명과 일치하도록 메서드 서명 또는 서명을 변경하고 속성 대신 요청 컨텍스트 매개 변수를 사용합니다.

"Area"는 이제 예약된 경로-값 키입니다.

경로 값의 문자열 "area"은 이제 "controller" 및 "action"과 동일한 방식으로 ASP.NET MVC에서 특별한 의미를 가합니다. 한 가지 의미는 HTML 도우미가 "area"를 포함하는 경로-값 사전과 함께 제공되면 도우미가 쿼리 문자열에 더 이상 "area"를 추가하지 않는다는 것입니다.

영역 기능을 사용하는 경우 경로 URL의 일부로 {area}를 사용하지 않도록 합니다.

고지 사항

본 문서는 예비 문서이며, 여기에 설명한 소프트웨어의 최종 상업적 출시 전에 크게 변경될 수 있습니다.

이 문서에 포함된 정보는 게시 날짜 당시 논의된 문제에 대한 Microsoft Corporation의 현재 관점을 나타냅니다. Microsoft는 변화하는 시장 상황에 대응해야 하므로 Microsoft의 약속으로 해석되지 않아야 하며, Microsoft는 게시 날짜 이후 제시된 정보의 정확성을 보증하지 않습니다.

이 백서는 정보 제공만을 목적으로 합니다. Microsoft는 이 문서에 있는 정보에 대한 명시적 또는 묵시적, 법적인 보증을 하지 않습니다.

해당 저작권법을 준수하는 것은 사용자의 책임입니다. 저작권에서의 권리와는 별도로 이 설명서의 어떠한 부분도 Microsoft의 명시적인 서면 승인 없이는 어떠한 형식이나 수단(전기적, 기계적, 복사기에 의한 복사, 디스크 복사 또는 다른 방법) 또는 목적으로도 복제되거나 검색 시스템에 저장 또는 도입되거나 전송될 수 없습니다.

Microsoft는 이 설명서 본안에 관련된 특허권, 상표권, 저작권, 또는 기타 지적 재산권 등을 보유할 수도 있습니다. 서면 사용권 계약에 따라 Microsoft로부터 귀하에게 명시적으로 제공된 권리 이외에, 이 설명서의 제공은 귀하에게 이러한 특허권, 상표권, 저작권 또는 기타 지적 재산권 등에 대한 어떠한 사용권도 허용하지 않습니다.

달리 명시되지 않는 한, 예제 회사, 조직, 제품, 도메인 이름, 전자 메일 주소, 로고, 사람, 장소 및 이벤트는 가상이며 실제 회사, organization, 제품, 도메인 이름, 전자 메일 주소, 로고, 사람, 장소 또는 이벤트와의 연관이 없거나 유추되어야 합니다.

© 2010 Microsoft Corporation. All rights reserved.

Microsoft 및 Windows는 미국 및/또는 기타 국가에서 Microsoft Corporation의 상표이거나 등록된 상표입니다.

여기에 언급된 실제 회사와 제품의 이름은 각각 해당 소유자의 상표일 수 있습니다.