在ASP.NET中,MVC控制器方法可以被修饰以接受特定的HTTP方法(Get,Post,Get.等)。在MvcContrib和ASP.NET MVC之间有三个类:"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文档可以找到这里。
AcceptGet和AcceptPost的创建似乎是为了填补ASP.NET Mvc框架早期版本中的一个空白。AcceptGet和AcceptPost类提供了一个强类型的HttpMethod属性。
ASP.NET MVC与AcceptVerbs一起发布,它采用了一个enum:
[Flags]
public enum HttpVerbs
{
Delete = 8,
Get = 1,
Head = 0x10,
Post = 2,
Put = 4
}我的问题是哪一个是更好的实现,AcceptGet/AcceptPost还是AcceptVerbs(带有HttpVerbs枚举类型)?
发布于 2009-05-03 11:04:34
我不认为这两种实现有很大区别,但考虑到这一点
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult EditRequest(string id)现在是框架的一部分,我一直使用这个。这两种类型都是强类型的,因此没有真正的区别,而且HttpVerbs枚举包括删除、Head和Put,它们不在MVC控制版本中。
发布于 2010-01-07 12:10:57
在ASP.Net MVC 2预览1版本中,核心MVC框架中有以下属性-- HttpPost、HttpGet、HttpDelete、HttpPut。当然,仍然支持AcceptVerbs属性。
因此,如果您使用的是MVC 2,那么您可以使用这些新的属性,而不需要AcceptPost和AcceptGet的MVC控制版本。
https://stackoverflow.com/questions/816456
复制相似问题