2009-06-23 9 views
5

क्या HTML UI पर जेएसओएन डेटा बाध्य करते समय क्लाइंट पर 'न्यूल' डंक होने से बचना संभव है?क्लाइंट साइड पर JSON डेटा बाध्य करते समय 'शून्य' तारों से कैसे बचें

मैं एएसपी.नेट एमवीसी + jQuery + jTemplates का उपयोग कर रहा हूं। डेटा linq-to-sql कक्षाओं से आ रहा है और इन वर्गों में काफी नलिका गुण हैं। इस तरह के गुण धारावाहिक हो और वापस ग्राहक को हस्तांतरित मैं ऐसे JSON के साथ अंत कब:

[{"Id":1,"SuitId":1,"TypeId":null,"Type":null,"CourtId":null,"Court":null}] 

मट्ठा मैं HTML में मैं 'शून्य' तार के लिए बहुत कुछ है इस डेटा के लिए बाध्य। मैंने मैन्युअल बाध्यकारी और जावास्क्रिप्ट टेम्पलेटिंग इंजन (jTemplate) दोनों की कोशिश की है। परिणाम एक ही हैं। वर्तमान में मैं इस प्रकार 'वालों' शून्य मान करके इस समस्या से निपटने हूँ:

$('#Elem').val(someVar||''); 

लेकिन मैं इसे मैन्युअल रूप से ऐसा करने के लिए नहीं करना चाहती।

कृपया सलाह अगर मैं:

  1. स्वचालित रूप से या तो क्रमबद्धता प्रक्रिया में सुधार करने या शायद नेट JSON serializer से अधिक 3 पार्टी JSON serializer का चयन करके तार खाली करने के लिए नल गुण का अनुवाद कर सकते हैं।
  2. क्लाइंट साइड पर कुछ भी कर सकता है, जैसे कि jQuery या टेम्पलेटिंग इंजन के साथ इस पर काम करना।

धन्यवाद।

उत्तर

2

आप कस्टम क्रमांकन सेट कर सकते हैं (देखें

How to implement custom JSON serialization from ASP.NET web service?)

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

1

मैं खुद से पूछता हूं कि डेटा किस बिंदु पर गलत है? यह कहना गलत है कि TypeId शून्य है (अज्ञात, असाइन नहीं किया गया है) जब इसे विशेष रूप से '' (खाली स्ट्रिंग) असाइन किया जाना चाहिए?

इस मामले में मुझे नहीं लगता कि प्रस्तुति किस तरह से "शून्य" प्रदर्शित करती है, आप बस एक खाली टेक्स्टबॉक्स या ऐसी कुछ चीज़ चाहते हैं। इस मामले में प्रस्तुतियों को डेटा को उस दृश्य में बदलने की समस्या है जो स्वीकार्य है, यह उसका काम है। इसलिए आपके "सहवास" का उपयोग मेरे लिए सही लगता है।

बेशक शायद यह एक अत्यधिक सख्त व्याख्या है और जैसा कि आप चाहें उतना व्यावहारिक नहीं हो सकता है। हालांकि लंबे समय तक (मेरा मतलब है कोड के जीवनकाल पर) यह आमतौर पर चीजों को सही रखने के लिए सबसे अच्छा होता है क्योंकि वे प्रैक्टिक रूप से हो सकते हैं।

3

आप jquem.jtemplate.js में कोड की अनुवर्ती रेखा को संशोधित करके शून्य की बजाय खाली स्ट्रिंग को वापस करने के लिए jtemplate को संशोधित कर सकते हैं।

सबसे पहले इस समारोह को खोजने

TemplateUtils.cloneData = function(d, filter, f_escapeString) { 

कोड के अगले ही ब्लॉक है एक अगर बयान

if (d == null) { 
    return d; 
} 

if (d == null) { 
    return ""; 
} 

है कि संशोधित करने और है कि यह

+0

अच्छा काम, बहुत चालाक। मुझे एक बहुत बड़ा प्रयास बचाया। – Gregory

0
करना चाहिए

केवल jTemplates के लिए, मैंने यही किया:

{#if $T.mylist.nullableProperty != null}{$T.myList.nullableProperty}{#/if} 
संबंधित मुद्दे