Что использовать: «AcceptGet, AcceptPost» (MvcContrib) против AcceptVerbs (ASP.NET Mvc)? - PullRequest
4 голосов
/ 03 мая 2009

В ASP.NET MVC методы контроллера могут быть оформлены для принятия на определенных HTTP-методах (Get, Post, Get .. и т. Д.). Между MvcContrib и ASP.NET MVC существует 3 класса: «AcceptGet, AcceptPost» и AcceptVerbs. Все три: «AcceptGet, AcceptPost» и AcceptVerbs делают одно и то же. Они указывают, какой метод http разрешен для доступа к действию / методу.

AcceptGet и AcceptPost находятся в MvcContrib. В то время как AcceptVerbs является родным для фреймворка Mvc. Что лучше использовать?

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)

Документацию для AcceptPost проекта MvcContrib можно найти здесь .

Похоже, что AcceptGet и AcceptPost были созданы, чтобы заполнить пробел в одной из более ранних версий ASP.NET Mvc Framework. Классы AcceptGet и AcceptPost предоставили строго типизированный атрибут HttpMethod.

ASP.NET MVC, выпущенный с AcceptVerbs, который принимает перечисление:

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

У меня вопрос: какая из реализаций лучше - AcceptGet / AcceptPost или AcceptVerbs (с типом перечисления HttpVerbs)?

Ответы [ 2 ]

5 голосов
/ 03 мая 2009

Я не думаю, что между этими двумя реализациями есть большая разница, но учитывая, что

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

сейчас является частью фреймворка, я всегда этим пользуюсь. Оба строго типизированы, поэтому здесь нет никакой разницы, и перечисление HttpVerbs включает Delete, Head и Put, которых нет в версии для MVC contrib.

2 голосов
/ 07 января 2010

Начиная с выпуска ASP.Net MVC 2 Preview 1 в основной структуре MVC находятся следующие атрибуты: HttpPost, HttpGet, HttpDelete, HttpPut. Конечно, атрибут AcceptVerbs все еще поддерживается.

Так что, если вы используете MVC 2, вы можете использовать эти новые атрибуты и не требовать версии MVC Contrib AcceptPost и AcceptGet.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...