2011-06-01 9 views

cevap

7

Evet, mümkün. Sadece bir eylemi ActionName özellik kullanmak:

 public ActionResult Delete(int id) 
     { 
      //... 
      return View(); 
     } 

     [HttpPost] 
     [ActionName("Delete")] 
     public ActionResult Delete_Post(int id) 
     { 
      //... 
      return View(); 
     } 
+0

Teşekkürler, bunun neden çok geçerli bir soru olduğundan başlangıçta reddedildiğini anlamadım. Bazı kişilerin rastgele bir parametre veya FormCollection uygulamasında geçmenizi önerdiğini okudum, ancak bu overkill gibi görünüyor. Bu, bunu yapmanın daha iyi bir yolu gibi geliyor. Çok takdir! –

+0

sadece bir soru ... mvc neden aynı imzayla 2 harekete izin vermiyor? Kontrolörün hangi işlemi yapması gerektiğini bilmeyeceğine inanıyorum, ama kesinlikle HttpPost ile bu bir problem olmaz mı? –

+1

Bu aslında MVC ile ilgili değil. C# belirtimine göre, bir yöntemin imzası, bildirildiği bir sınıfta benzersiz olmalıdır. Bunu düşünürseniz, özellik yoksa, onları nasıl ayırt edersiniz? – frennky

1

bunu izin verilmediğini hatayı alıyorum nedeni C# kendisi karışır çünkü. MVC'de bir işlev HttpGet veya HttpPost olup olmadığını belirtmek için öznitelikler ekleyebilirsiniz, bu C# bir veya diğeri arasındaki farkı belirlemesine yardımcı olmaz. Aynı isimle 2 fonksiyona sahip olmak için, parametre listesinin farklı olması gerekir.

Frennky'nin işaret ettiği gibi, ActionName özniteliği MVC'de çalışır; çünkü MVC, adlandırılacak eylemi belirlemek için işlemin bir parçası olarak diğer adlar kullanır (özniteliklerle birlikte değil, parametrelerle birlikte).

Bir yan not olarak, GET isteğinde bir Sil eyleminin olmaması en iyisidir. Yanlış bir bağlantıya çarparak bir paletli ya da başka bir bot istemiyorsunuz: P

İlgili konular