2009-05-03 2 views
4

ASP.NET MVC 컨트롤러 메서드는 특정 HTTP 메서드 (Get, Post, Get 등)를 받아 들일 수 있습니다. MvcContrib과 ASP.NET MVC 사이에는 "AcceptGet, AcceptPost"및 AcceptVerbs의 3 가지 클래스가 있습니다. 세 가지 모두 : "AcceptGet, AcceptPost"및 AcceptVerbs는 동일한 작업을 수행합니다. 그들은 어떤 http 메소드가 액션/메소드에 접근하도록 허용되는지를 지정합니다.사용 대상 : "AcceptGet, AcceptPost"(MvcContrib) 대 AcceptVerbs (ASP.NET MVC)?

AcceptGet 및 AcceptPost는 MvcContrib에 있습니다. AcceptVerbs는 Mvc 프레임 워크의 기본입니다. 어느 것을 사용하는 것이 더 낫습니까?

AcceptGet/AcceptPost (MvcContrib)

/// <returns></returns> 
[AcceptGet] 
public ActionResult Profile(string id) 

AcceptVerbs (ASP.NET MVC)에 MvcContrib 프로젝트의 AcceptPost에 대한

/// <returns></returns> 
[AcceptVerbs(HttpVerbs.Get)] 
public ActionResult EditRequest(string id) 

문서는 here를 찾을 수 있습니다.

AcceptGet 및 AcceptPost는 ASP.NET Mvc 프레임 워크의 이전 버전 중 하나에서 간격을 메우기 위해 만들어졌습니다. AcceptGet 및 AcceptPost 클래스는 강력한 형식의 HttpMethod 특성을 제공합니다. (HttpVerbs 열거 타입)

[Flags] 
public enum HttpVerbs 
{ 
    Delete = 8, 
    Get = 1, 
    Head = 0x10, 
    Post = 2, 
    Put = 4 
} 

내 질문은, 더 나은 구현하는 하나의 AcceptGet/AcceptPost 또는 AcceptVerbs입니다 :

ASP.NET MVC는 열거한다 AcceptVerbs 함께 출시?

답변

5

내가 거기에 두 구현의 차이의 큰 거래이야하지만

[AcceptVerbs(HttpVerbs.Get)] 
public ActionResult EditRequest(string id) 

이제 프레임 워크의 일부임을 주어진 생각하지 않는다, 나는 항상 이것을 사용합니다. 둘 다 강하게 입력되므로 실제 차이점이 없으며 HttpVerbs 열거 형은 MVC contrib 버전에없는 Delete, Head 및 Put을 포함합니다.

2

ASP.Net MVC 2 Preview 1 릴리스부터 다음 속성이 HttpPost, HttpGet, HttpDelete, HttpPut의 핵심 MVC 프레임 워크에 있습니다. 물론 AcceptVerbs 속성은 여전히 ​​지원됩니다.

MVC 2를 사용하는 경우 이러한 새 특성을 사용할 수 있으며 MVC Contrib 버전의 AcceptPost 및 AcceptGet이 필요하지 않습니다.