2015-09-14 2 views
5

वर्तमान में वेब तरीकों या क्लासिक एएसपी .net में तरीकों में से सबसे system.web.script.serialization.javascriptserializer वर्ग का उपयोग कर serializes और इस तरह केक्या JSON प्रारूप के बजाय एएसपीनेट वेब विधि से आईएसओ प्रारूप में डेटटाइम वापस करने का कोई तरीका है?

के रूप में मूल्यों के साथ जावास्क्रिप्ट वस्तु की दिनांक सदस्यों रिटर्न "/ तिथि (टिकों की संख्या)/"

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

उदाहरण के लिए वर्ग

public class Person 
{ 
    public String Name { get; set; } 
    public int Age { get; set; } 
    public DateTime DOB { get; set; } 
} 

एक [ScriptMethod (ResponseFormat = ResponseFormat.Json)] सजावट के साथ एक System.Web.Services.WebMethod के माध्यम से लौटे, प्रतिक्रिया परिणाम में नीचे के रूप में लौटा दी जाएगी। डी

{Name:"Steve", Age:30, DOB:"/Date(1249335477787)/"}; 

और हमें डीओबी को आईएसओ प्रारूप या कुछ अन्य स्वीकार्य प्रारूप में बदलने के लिए कुछ कोड लागू करने की आवश्यकता है।

लेकिन मैं सिर्फ यह देखने की कोशिश कर रहा हूं कि किसी ने किसी प्रकार की प्रतिक्रिया tweaking या वेब विधियों से डेटटाइम मानों को वापस करने के लिए एक ओवर-राइड क्लास का उपयोग किया है या नहीं। क्या जावास्क्रिप्टरिएलाइज़र की कार्यक्षमता को ओवर-राइड करने का कोई तरीका है और इसे एएसपीनेट वेब विधियों में उपयोग करें ताकि यह सीधे आईएसओ प्रारूप में दिनांक लौटा सके? मुझे पता है कि यह कुछ तरीकों से एएसपीनेट एमवीसी में किया जा सकता है।

क्या यह एएसपीनेट वेब फॉर्म की वेब विधियों में भी किया जा सकता है? इससे बहुत सारे कोड और बग भी बचाए जाएंगे :)

+1

आप न्यूटॉन्सॉफ्ट –

+0

हाँ का उपयोग करके अपना खुद का कस्टम जेसन सीरियलज़ियर लिख सकते हैं, लेकिन मैं ऑब्जेक्ट को वापस करने के लिए इस नए कस्टम सीरिएलाइज़र का उपयोग करने के लिए WebMethod कैसे कहूं। मैं इसे एक स्ट्रिंग के रूप में भी वापस नहीं करना चाहता हूं :( – Muthu

+1

आईएसओ * जेएसओएन प्रारूप है। क्या आप शायद (बहिष्कृत) जावास्क्रिप्टसेरियलाइज़र का उपयोग कर रहे हैं? –

उत्तर

-3

आप वेबमाइड में आसानी से प्रतिक्रिया प्रकार घोषित कर सकते हैं। इसके अलावा, आप कस्टम serializer इस link में वर्णित के रूप का उपयोग करें या कैसे एक तारीख को स्वरूपित करने पर कोड follwoing देख सकते हैं:

class DualDateJsonConverter : JsonConverter 
{ 

    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) 
    { 

     JObject result = new JObject(); 

     DualDate dd = (DualDate)value; 

     result.Add("DateOne", JToken.FromObject(dd.DateOne.ToString("MM.dd.yyyy"))); 
     result.Add("DateTwo", JToken.FromObject(dd.DateTwo)); 
     result.WriteTo(writer); 
    } 

    // Other JsonConverterMethods 
    public override bool CanConvert(Type objectType) 
    { 
     return objectType == typeof(DualDate); 
    } 

    public override bool CanWrite 
    { 
     get 
     { 
      return true; 
     } 
    } 
    public override bool CanRead 
    { 
     get 
     { 
      return false; 
     } 
    } 

    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) 
    { 
     throw new NotImplementedException(); 
    } 
} 
Context.Response.ContentType = "application/json"; 
Context.Response.Write(response); 
+0

मुझे लगता है कि प्रतिक्रिया प्रकार पहले से ही सही है, ओपी क्या पसंद नहीं करता तारीखों के लिए प्रारूप है ... –

+0

@AdrianoRepetti तो क्या इसका मतलब यह है कि आप मेरा जवाब समर्पित कर सकते हैं? क्या आपने मेरा जवाब पूरी तरह पढ़ा? –

+0

एफवाईआई (इसके लिए क्या मायने रखता है) मैंने आपके जवाब को कम नहीं किया है, लेकिन हां मैंने इसे पूरी तरह से पढ़ा है और यहां तक ​​कि दूसरे पढ़ने के बाद भी मुझे समझ में नहीं आता कि प्रतिक्रिया के प्रकार के साथ क्या करना है ... –

2

मैं http://blog.icanmakethiswork.io/2012/04/beg-steal-or-borrow-decent-javascript.html से एक चाल पाया।

यह जेसनसेरियलाइज़र की अपनी तिथि धारावाहिक को प्रतिस्थापित करने और कस्टम दिनांक serializer का उपयोग करने के लिए है।

  • अवहेलना System.Web.Script.Serialization.JavaScriptConverter
  • अद्यतन web.config अनुभाग पूरी परियोजना को यह लागू करें या स्थानीय स्तर पर

यह प्रयोग करने के लिए RegisterConverters समारोह का उपयोग करने के यह वापसी करने में सक्षम है मुझे एक आईएसओ स्वरूपित दिनांक समय वापस भेज दिया गया है और मैं जावास्क्रिप्ट के अंदर हेरफेर के लिए इस अंदर के पल जेएस को पास करने में भी सक्षम हूं।

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