2010-02-15 12 views
10

मैं एक साधारण कार्रवाई पोस्ट कर रहा हूं।को एएसपीनेट एमवीसी पर फॉर्मकोलेक्शन खाली होना चाहिए अनुरोध

public void Login(FormCollection formCollection) 
{ 
    ... 
} 
यहां तक ​​कि कुछ क्वेरी स्ट्रिंग मूल्यों के साथ

, formcollection.Count है। क्या यह व्यवहार से है?

+2

यदि आपकी कार्रवाई वास्तव में "सरल" है, तो आप केवल प्रत्येक चर के लिए कार्रवाई तर्क क्यों नहीं घोषित करते हैं, जिसमें आप पारित होने की उम्मीद करते हैं? एमवीसी फ्रेमवर्क स्वचालित रूप से आपके लिए उन चरों को बांध देगा जिसका अर्थ है कि (1) यह इस बात पर ध्यान दिए बिना कि वेरिएबल मार्ग, यूआरएल, या फॉर्म डेटा में पारित किया गया है या नहीं (और) यह आपके कोड को पढ़ने के लिए बहुत आसान बनाता है , समझें, और परीक्षण करें। अधिकांश मामलों में एक तर्क के लिए "फॉर्मकोलेक्शन" पास करना एक विरोधी पैटर्न है और इससे बचा जाना चाहिए। –

+0

@ सेठ - क्या होगा अगर विधि एक AJAX अनुरोध हैंडलर है? उस स्थिति में, यदि पैरामीटर विकृत या अनुपलब्ध है तो मैं एएसपी.NET त्रुटि पृष्ठ की बजाय एक उचित जेसन (नया {सफलता = झूठी, errorMsg = "..."}) वापस कर दूंगा। –

उत्तर

12

फॉर्मकॉलक्शन POST मानों का उपयोग करता है और क्वेरी स्ट्रिंग में क्या नहीं है। आपकी कार्रवाई देखना चाहिए:

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

धन्यवाद। मैं अनुरोध वस्तु से बचने की कोशिश कर रहा हूं। – Adeel

+0

http प्राप्त करने के द्वारा यह कैसे किया जाएगा? मैं यूआरएल में मूल्यों को रखना चाहता हूं ताकि उपयोगकर्ता को – Chev

+3

@ चेव के परिणाम सहेजने की अनुमति मिल सके, आप जीईटी अनुरोधों के साथ 'अनुरोध ["paramName"] 'का उपयोग करते हैं। –

संबंधित मुद्दे