2012-06-25 18 views
6

में डेटा से नियंत्रक को देखने के लिए डेटाटाइम को कैसे पास किया जाए मैं डेटा के नीचे नियंत्रक को अपना दृश्य फॉर्म पास करने की कोशिश कर रहा हूं।एएसपीनेट एमवीसी

संपादित

<script type="text/javascript"> 
    var pathname = 'http://' + window.location.host; 
    var Student = [ 
    { Name: "Vijay", ID: 1, DOB: "2010-12-09T08:00:00.000Z" }, 
    { Name: "Anand", ID: 2, DOB: "2010-12-09T08:00:00.000Z" } 
    ]; 

    $.ajax({ 
    url: pathname + "/Home/UpadetStu", 
    type: "POST", 
    dataType: "json", 
    data: JSON.stringify(Student), 
    contentType: "application/json; charset=utf-8", 
    success: function (result) { }, 
    failure: function (r, e, s) { alert(e); } 
    }); 

</script> 



    [ObjectFilter(Param = "stuData", RootType = typeof(Stu[]))] 
    public JsonResult UpadetStu(Stu[] stuData) 
    { 
     return this.Json(new { success = true }); 
    } 

[DataContract] 
public class Stu 
{ 
    [DataMember] 
    public string Name { get; set; } 

    [DataMember] 
    public int ID { get; set; } 

    [DataMember] 
    public DateTime? DOB { get; set; } 

} 

लेकिन नियंत्रक में जन्म तिथि के लिए नाम और पहचान पत्र, डिफ़ॉल्ट datetime के लिए अशक्त हो रही है, मैंने पाया datetime पारित करने में समस्या है। डेटाटाइम को देखने के लिए डेटाटाइम पास करने का कोई बेहतर तरीका है? क्या मुझे कोई पार्सिंग याद आती है?

+0

क्या की तरह अपने नियंत्रक देखो पर अपनी कार्रवाई करता है? – thmsn

+0

[ऑब्जेक्टफिल्टर (पैराम = "छात्रडाटा", रूटटाइप = टाइपोफ (स्टू []))] सार्वजनिक जेसन रीसेट अपडेटेट स्टूडेंट (स्टू [] छात्रडाटा) { इसे वापस करें। जेसन (नया {सफलता = सत्य}); } नियंत्रक में उपरोक्त कोड का उपयोग कर रहा हूँ। – Amar

+0

तब आपका स्टू ऑब्जेक्ट कैसा दिखता है? क्या इसमें डीओबी संपत्ति है? क्या आपने सत्यापित किया है कि आपका jQuery.ajax वास्तव में फ़ायरबग या फिडलर का उपयोग करके आपके सर्वर पर पोस्ट कर रहा है? – thmsn

उत्तर

5

कर उत्पादन समस्या Thu Dec 9 13:30:00 UTC+0530 2010 सी # में एक वैध datetime वस्तु में पार्स नहीं किया जा सकता है। आप इसे DateTime.Parse("Thu Dec 9 13:30:00 UTC+0530 2010") पर कॉल करके कोशिश कर सकते हैं, यह असफल हो जाएगा।

मैं सुझाव दूंगा कि सर्वर से उस दिनांक प्रारूप को वापस करने के बजाय आप जैसे ISO 8601 प्रारूप को बेहतर तरीके से वापस कर सकते हैं।

आप आसानी से जावास्क्रिप्ट से आईएसओ 8601 में लंबे दिनांक प्रारूप में बदल सकते हैं,

new Date("Thu Dec 9 13:30:00 UTC+0530 2010").toJSON(); 

आप आप आसानी से जिस तरह datetimes धारावाहिक होने की जरूरत को नियंत्रित कर सकते JSON.NET लाइब्रेरी का उपयोग कर रहे हैं।

अद्यतन:

<script type="text/javascript"> 

    var Student = [ 
    { Name: "Vijay", ID: 1, DOB: "2010-12-09T08:00:00.000Z" }, 
    { Name: "Anand", ID: 2, DOB: "2010-12-09T08:00:00.000Z" } 
    ]; 

    $.ajax({ 
    url: "/Home/Index", 
    type: "POST", 
    dataType: "json", 
    data: JSON.stringify(Student), 
    contentType: "application/json; charset=utf-8", 
    success: function (result) { }, 
    failure: function (r, e, s) { alert(e); } 
    }); 

</script> 

[HttpPost] 
public ActionResult Index(Student[] students) 
{ 
    ... 
} 
+0

var studentString = JSON.stringify (छात्र); खुद प्रारूप को बदल देगा, "छात्रस्ट्रिंग" में इस प्रारूप में डीओबी होगा 2010-12-09T08: 00: 00.000Z केवल तभी यह काम नहीं कर रहा है? – Amar

+0

मैंने अभी आईएसओ प्रारूप में डेटाटाइम में प्रवेश करने वाले एक साधारण टेक्स्टबॉक्स के साथ परीक्षण किया और यह ठीक काम किया – VJAI

+0

कृपया अधिक कोड पोस्ट करें, तो मैं यह पता लगाने में सहायता कर सकता हूं कि समस्या कहां है – VJAI

0

यदि आपके नियंत्रक में आपका छात्र डेटा ऑब्जेक्ट शून्य है, तो JSON.stringify (छात्र) ऐसी ऑब्जेक्ट का उत्पादन कर रहा है जो उचित JSON या ऑब्जेक्ट नहीं है जिसे आपके स्टू ऑब्जेक्ट पर पार्स नहीं किया जा सकता है।

सत्यापित करें कि आपका जे एस छात्र वस्तु सही है, तो JSON सत्यापित करें कि आप JSON.stringify