2010-02-15 20 views
10

üzerinde boş olmalıdır. Hatta birkaç sorgu dizesi değerleri ileformcollection asp.net mvc GET request

public void Login(FormCollection formCollection) 
{ 
    ... 
} 

, formcollection.Count olduğunu. Davranış mı?

+2

Eğer eyleminiz gerçekten "basit" ise, neden iletilmek istediğiniz her değişken için neden eylem argümanlarını beyan etmiyorsunuz? MVC çerçevesi sizin için bu değişkenleri otomatik olarak bağlayacaktır, bu da (1) değişkenin rotada mı, URL'de mi yoksa form verisinde mi olduğuna bakılmaksızın çalışacaktır ve (2) kodunuzun okunmasını daha kolay hale getirir , anlayın ve test edin. Çoğu durumda bir argümana "FormCollection" geçerek bir anti-desen ve kaçınılmalıdır. –

+0

@Seth - Yöntem ajax istek işleyicisi ise ne olur? Bu durumda, parametre hatalı veya eksikse, ASP.NET hata sayfasından ziyade uygun bir Json (yeni {success = false, errorMsg = "..."}) döndürmeyi tercih ederim. –

cevap

12

FormSollection, POST değerlerini kullanır ve sorgu dizesinde neyin bulunmadığını değil. Eyleminiz şöyle olmalıdır:

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult Login(FormCollection formCollection) 
{ 
    ... 
} 
+0

Teşekkürler. Request nesnesinden kaçınmaya çalışıyorum. – Adeel

+0

http: kullanarak bu nasıl yapılır? Bir kullanıcının bir arama – Chev

+3

@ Chev sonuçlarını kaydetmesine izin vermek için url değerlerini tutmak istiyorum, GET istekleri ile 'İstek [" paramName "]' kullanın. –