在 ASP.NET MVC 中, Controller 方法可以被修饰为接受特定的 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)
可以找到 MvcContrib 项目的 AcceptPost 的文档 here 。
看起来 AcceptGet 和 AcceptPost 的创建是为了填补 ASP.NET Mvc 框架的早期版本之一中的空白。 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 枚举类型)?
最佳答案
我不认为这两种实现之间有很大的不同,但鉴于
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult EditRequest(string id)
现在是框架的一部分,我总是使用它。两者都是强类型的,所以没有真正的区别,HttpVerbs 枚举包括 Delete、Head 和 Put,它们不在 MVC contrib 版本中。
关于asp.net-mvc - 哪个使用 : "AcceptGet, AcceptPost"(MvcContrib) vs. AcceptVerbs(ASP.NET Mvc)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/816456/