2009-05-03 3 views
4

In ASP.NET MVC-Controller-Methoden können eingerichtet werden, um auf bestimmte HTTP-Methoden (Get, Post, Get .. etc) zu akzeptieren. Zwischen MvcContrib und ASP.NET MVC gibt es 3 Klassen: "AcceptGet, AcceptPost" und AcceptVerbs. Alle drei: "AcceptGet, AcceptPost" und AcceptVerbs machen dasselbe. Sie geben an, welche http-Methode auf eine Aktion/Methode zugreifen darf.Welche verwenden: "AcceptGet, AcceptPost" (MvcContrib) vs. AcceptVerbs (ASP.NET Mvc)?

AcceptGet und AcceptPost sind im MvcContrib. Während AcceptVerbs nativ für das Mvc-Framework ist. Was ist besser zu benutzen?

AcceptGet/AcceptPost (MvcContrib)

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

AcceptVerbs (ASP.NET MVC)

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

Dokumentation für die AcceptPost des MvcContrib Projekt kann here finden.

Es scheint, dass AcceptGet und AcceptPost erstellt wurden, um eine Lücke in einer der früheren Versionen des ASP.NET Mvc-Frameworks zu füllen. Die Klassen AcceptGet und AcceptPost enthielten ein stark typisiertes HttpMethod-Attribut.

ASP.NET MVC mit AcceptVerbs veröffentlicht, die eine ENUM nimmt:

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

Meine Frage ist, welche eine bessere Umsetzung, AcceptGet/AcceptPost oder AcceptVerbs (mit HttpVerbs Aufzählungstyp)?

Antwort

5

Ich glaube nicht, es gibt einen großen Unterschied zwischen den beiden Implementierungen aber da

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

Teil des Rahmens ist jetzt, ich dies immer verwenden. Beide sind stark typisiert, so dass es keinen wirklichen Unterschied gibt, und die HttpVerbs-Enumeration enthält Delete, Head und Put, die nicht in der MVC contrib-Version sind.

2

Ab ASP.Net MVC 2 Preview 1-Version befinden sich die folgenden Attribute im Kern MVC-Framework - HttpPost, HttpGet, HttpDelete, HttpPut. Natürlich wird das AcceptVerbs-Attribut weiterhin unterstützt.

Wenn Sie also MVC 2 verwenden, können Sie diese neuen Attribute verwenden und benötigen nicht die MVC Contrib-Versionen von AcceptPost und AcceptGet.