2011-12-09 16 views
9

की बजाय स्ट्रिंग के रूप में "शून्य" प्राप्त होता है। मेरे पास जेसन या एएसपी.नेट एमवीसी के साथ कुछ गड़बड़ है, मैं एएसपी.नेट एमवीसी का उपयोग कर रहा हूं और यहां मैं क्लाइंट से भेज रहा हूं।एएसपी.नेट एमवीसी को शून्य

नोट क्रोम में डिबगिंग के बाद, मैं समझा रहा हूँ कि यह क्या जावास्क्रिप्ट भीतर पारित कर दिया है, मैं मैन्युअल रूप से स्थापित करने नहीं कर रहा हूँ के रूप में यह शून्य के रूप में कहीं और से परिणाम के रूप में आ रहा है राज्य शून्य पर है। जो एक बार फिर से मेरे नियंत्रण में नहीं है क्योंकि यह डेटाबेस से आ रहा है।

डीबगिंग करते समय, राज्य प्रदर्शित करता है कि यह "शून्य" के बजाय शून्य है, लेकिन एमवीसी में डीबगिंग करते समय यह शून्य के बजाय "शून्य" प्रदर्शित कर रहा है।

$.ajax(
    '/Client/Post', 
    { 
     method: 'POST', 
     data: { 
       Country: 'US', 
    // this is null because it is coming from somewhere else as null 
       State: null 
      } 
    }); 

मेरे ASP.NET MVC हैंडलर प्राप्त करता है ...

public ActionResult Post(Client model){ 
    if(model.State == "null") 
    { 
     /// this is true... !!!! 
    } 
    if(model.State == null) 
    { 
     // :(this should be true... 
    } 
} 

enter image description here

यह ASP.NET MVC या jQuery की समस्या है?

तो क्या यह jQuery है जो शून्य को "शून्य" के रूप में भेजता है या क्या यह एमवीसी है जो "शून्य" के रूप में शून्य स्थापित कर रहा है?

समाधान

मैं सिर्फ रिकर्सिवली नई वस्तु पदानुक्रम (वस्तु क्लोनिंग) बना सकते हैं और jQuery को भेजने के लिए, के रूप में jQuery फार्म एन्कोड जिसमें कोई रास्ता नहीं अशक्त प्रतिनिधित्व करने के लिए है के रूप में डेटा भेजा था फिर भी, आदर्श jQuery को क्रमशः धारावाहिक शून्य नहीं होना चाहिए था। मैं के बाद

$.ajax('/Client/Post', 
{ 
    method: 'POST', 
    data: { 
      Country: 'US' 
     } 
}); 


संपादित फिर से पढ़ अपनी पोस्ट

var data = { 
       Country: 'US', 
       State: null 
      } 
if (!data.State) delete data.State; 
$.ajax('/Client/Post', 
    { 
     method: 'POST', 
     data: data 
    } 
}); 

यह आपकी जानकारी के ऊपर

+0

पढ़ इस एक: http://stackoverflow.com/questions/801032/null-object-in-javascript –

+0

[http://en.wikipedia.org/wiki/Http #Technical_Overview] (http: //en.wikipedia.or जी/विकी/एचटीपी # तकनीकी_ओवरव्यू) – Esailija

+0

क्या आप IE8 का उपयोग कर रहे हैं? – wsanville

उत्तर

6

क्षेत्र न भेजें jQuery यह करता है। आप फ़ायरबग Fiddler, क्रोम देव सहायक, आदि

इस मामले में से अनुरोध निगरानी कर सकते हैं, हो सकता है आप खाली बजाय स्ट्रिंग null इस्तेमाल कर सकते हैं:

data: { 
    Country: 'US', 
    State: "" 
} 
+1

कृपया ** पढ़ें **, यह कहीं और के परिणामस्वरूप डेटाबेस से आ रहा है, मैंने स्थिति को समझाने के लिए अभी एक छोटा कोड लिखा है, मैं इसे शून्य के रूप में सेट नहीं कर सकता, जब परिणाम एमवीसी, जेएसओएन पार्स राज्य से वापस प्राप्त किया जाता है "शून्य" के बजाय सही ढंग से शून्य पर वापस। –

+0

@ आकाशकवा, जानें कि http कैसे काम करता है। सर्वर और क्लाइंट के बीच सभी संदेश केवल शुद्ध तार हैं। मैंने पहले ही यह आपके लिए जोड़ा है। स्ट्रिंग 'null" 'को ASP.NET 'null' मान में कनवर्ट करने के लिए आपको स्पष्ट पार्सिंग की आवश्यकता है, क्योंकि यह स्पष्ट रूप से आपके लिए यह नहीं करता है। JSON जावास्क्रिप्ट ऑब्जेक्ट प्रस्तुति में शुद्ध स्ट्रिंग को पार करता है, इसलिए निश्चित रूप से सर्वर से भेजा गया "शून्य" जावास्क्रिप्ट में वास्तविक शून्य मान है। इतना क्रोध ... – Esailija

+0

@Esailija, सीखने के HTTP के पास इसके साथ कुछ लेना देना नहीं है, हमारे पास एक ही एप्लीकेशन है जो आईओएस, फ्लेक्स, सिल्वरलाइट पर भी काम करता है, हर जगह नल सही तरीके से बदल जाता है, इसके बारे में मेरी शिक्षा के साथ कुछ लेना देना नहीं है http, यह आसान है कि जेसन के पास शून्य के लिए सही प्रावधान है और इसे सही ढंग से पार्स या ट्रांसफॉर्म किया जाना चाहिए। आप स्क्रीन शॉट देख सकते हैं, यह या तो jQuery या एमवीसी है जो इसे गलत कर रहा है। –

3

के रूप में एक ही सटीक सिद्धांत है:

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