[AcceptVerbs (HttpVerbs.Post)] ve [HttpPost] arasındaki fark nedir?


81

Bir eylemi [AcceptVerbs (HttpVerbs.Post)] / [AcceptVerbs (HttpVerbs.Get)] ile dekore edebilirim

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(string title)
{
    // Do Something...
}

veya [HttpPost] / [HttpGet] öznitelikleriyle

[HttpPost]
public ActionResult Create(string title)
{
    // Do Something...
}

Onlar farklı mı?


1
HttpPost, MVC 2.0+ ve Matthew'un dediği gibi, sadece kısa eli
dbones

asp net mvc'de [HttpPost] gibi ifadeler nasıl çağrılır? dekoratörler?
andilabs

@andi Bunlar "Nitelikler" olarak adlandırılır msdn.microsoft.com/en-us/library/z0w1kczw.aspx
Gabriel Espinoza

[AcceptVerbs("GET")]Yardım belgelerinde bu eylem için oluşturulan bir girişi durdurabileceğini buldum .
CompanyDroneFromSector7G

Yanıtlar:


55

Hiçbir şey değil. Biri diğerinin kısaltmasıdır.


1
Tek bir uç noktada alma ve gönderme kabul edilmez. Bu uç noktanın amacı nedir?
sensei

Yanlış olduğu için bu önerilen cevap olmamalıdır.
John Lord

201

[HttpPost]kısaltmasıdır [AcceptVerbs(HttpVerbs.Post)]. Tek fark, [HttpGet, HttpPost]aynı eylemde birlikte (ve benzerini) kullanamamanızdır . Hem GET'lere hem de POST'lara yanıt veren bir eylem istiyorsanız, kullanmalısınız [AcceptVerbs(HttpVerbs.Get | HttpVerbs.Post)].


20
bu, kabul edilenden daha doğru ve bilgilendirici bir cevaptır.
24x7Programmer

1
[HttpPost] ve [HttpGet] kullanmayı tercih ediyorum. Bir eylem için ikisini de gerektiğinde: sadece herhangi kullanmayın (eğer PUT gerekmez çünkü SİL veya diğerleri)
Sergey G.

1
Tutarlılığı tercih ederim, yani maalesef sadece "eski" AcceptVerbs her zaman işe yarayacak, utanç verici. Microsoft, bu "yeni" yöntemin kafa karışıklığına ve soruna neden olmasını önlemek için çoklu kullanıma izin verecek şekilde özniteliği değiştirmelidir, örneğin stackoverflow.com/questions/16658020/…
Tony Wall

2
@CodeChief Hızlı bir düşünce deneyi, neden böyle olduğunu açıklığa kavuşturabilir ... AcceptVerbsÖznitelik tek bir Flags parametresi alır. Or-ing ile birden fazla bayrak belirlersiniz. [HttpPost]kısaltması şunun kısaltmasıdır: [AcceptVerbs(HttpVerbs.Post)] Eğer steno kullanırsanız VEYA bayrakları için kullanılabilecek bir mekanizma yoktur; bu nedenle AcceptVerbs hala mevcuttur (geriye dönük uyumluluk nedenlerinin ötesinde).
Robert Harvey

@RobertHarvey - Ne oldukları açık, tartışma, iki farklı HttpGet ve HttpPost özniteliğinin birlikte çalışmasına neden izin vermediğidir . Düşünmem gereken şey, eğitim ve geliştirme ekipleri oluşturmak. Diğer geliştiricilere ne yapmalarını söylüyorsunuz ... "Bu özelliği kullanın ... ama bu durumda diğerini kullanın ....". Dolayısıyla tutarlılık için insanlara kullanmalarını söyleyebileceğiniz tek şey AcceptVerbs'dir. HttpGet / HttpPost'un bu sınırlaması sezgisel değil, muhtemelen bir hata. Genel olarak büyük bir sorun değil, sadece bir "aldatma".
Tony Wall
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.