2012-02-13 21 views
7

मैं एमवीसी 3 का उपयोग कर रहा हूं और मुझे पता है कि एमवीसी 3 समर्थन जेएसओएन शाब्दिक एक्शन पैरामीटर को बाध्यकारी है। लेकिन मैं इसे सफलतापूर्वक नहीं कर सकता;एएसपी.नेट एमवीसी 3 जेएसओएन मॉडल बाध्यकारी काम नहीं कर रहा

मैं एक वर्ग के नाम टैग है

public class Tag 
{ 
    public int tagId { get; set; } 
    public string tagName { get; set; } 
} 

नियंत्रक पर एक कार्रवाई टैग कहा जाता

[HttpPost] 
    public ActionResult Tag(Tag tag) 
    { 
     // Here will be codes... 
     return Json(new { success = 0 }); 
    } 

जावास्क्रिप्ट कोड है कि जे एस मेरी कार्रवाई करने के लिए JSON के रूप में ऑब्जेक्ट भेजने

var tag ={tagId:5,tagName:"hello"}; 
    $.ajax({ 
      url: "/image/tag", 
      type: "POST", 
      data: $.toJSON(tag), 
      success: function (r) { 
       if (r.success == 1) { 
        window.location = r.redirect; 
       } 
      } 

पोस्ट डाटा कि मैं फायरबग नेट टैब

में देखता हूं
{"tagId":5,"tagName":"hello"} 

टैग एक्शन में पैरामीटर नाम टैग शून्य नहीं है लेकिन टैग नाम के लिए टैग आईडी और शून्य के लिए ओ मान है। यहां क्या समस्या है?

उत्तर

18

आप application/json के अनुरोध की सामग्री प्रकार स्थापित करने की आवश्यकता: आह

$.ajax({ 
    url: '/image/tag', 
    type: 'POST', 
    contentType: 'application/json; charset=utf-8', 
    data: $.toJSON(tag), 
    success: function (r) { 
     if (r.success == 1) { 
      window.location.href = r.redirect; 
     } 
    } 
}); 

, और आप अपने टैग मॉडल गुण होते हैं की जरूरत नहीं है एक छोटा अक्षर के साथ शुरू:

public class Tag 
{ 
    public int TagId { get; set; } 
    public string TagName { get; set; } 
} 

टिप्पणी 1: JavaScriptSerializer कक्षा जो एएसपी.नेट एमवीसी 3 दृश्यों के पीछे उपयोग करती है, इसे ठीक से संभालने में सक्षम है।

टिप्पणी 2: अपने Tag कार्रवाई में आप निम्नलिखित JSON लौटने लगते हैं: {"success":0} अपनी सफलता AJAX कॉलबैक में जबकि आप कुछ r.redirect संपत्ति जो मौजूद नहीं है ज़रिये जुड़े हुए हैं।

टिप्पणी 3: अपने कंट्रोलर कार्यों को अपने दृश्य मॉडल के समान नाम देने से बचें। आम तौर पर क्रिया नामों को क्रियाओं का प्रतिनिधित्व करना चाहिए (जैसे List, Save, Delete, ...) जबकि मॉडल संसाधनों का प्रतिनिधित्व करते हैं (TagModel, ...)।

+1

टैग दोनों एक संज्ञा और एक क्रिया है –

+0

धन्यवाद डारिन, मुझे इस समस्या का सामना करने में लगभग 1 घंटे का सामना करना पड़ रहा है। आपकी अतिरिक्त जानकारी के लिए भी धन्यवाद – Yucel

+0

टिप्पणी 2. प्रतिक्रिया में सफलता = 0 ताकि ब्लॉक –

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