2017-04-13 7 views
8
public List<Region> Regions { get; set; } 

News.An क्षेत्र मॉडल कहा जाता मॉडल में में आइटम संलग्नFormData सरणी

public class Region 
    { 
     public int Id { get; set; } 
     public string Name { get; set; } 
     public static Region Parse(DataRow row) 
     { 
      return new Region 
      { 
       Id = Database.GetInteger(row["Id"]), 

       Name = Database.GetString(row["Region"]), 


      }; 
     } 
    } 
जावास्क्रिप्ट में

मैं formdata साथ AJAX पोस्ट विधि का उपयोग कर रहा है। मैं इस क्षेत्र को सेट करना चाहता हूं।

var regionList = []; 
      if (selected === "region") { 
       if (region.length <= 0) { 
        toastr.warning('Lütfen en az bir bölge seçin !!!'); 
        return; 
       } 

       for (var i = 0; i < region.length; i++) { 

        var item = { 
         Id: region[i] 
        } 
        regionList.push(item); 
       } 
       console.log(regionList); 
       formData.append("Regions", regionList); 
      } 

कोड जे एस में ऊपर मैं इसे

public ActionResult AddByRegion(News item) 
     { 
      int refPortal = SessionRepository.GetPortalId(); 
      if(refPortal!=1) 
       return View("List", NewsRepository.ListAll(SessionRepository.GetPortalId())); 
      if (item == null 
       || string.IsNullOrEmpty(item.Title) 
       || string.IsNullOrEmpty(item.Content) 
       ) 
       return Content(Serialization.JsonSerialize(new { Status = 400 })); 

      return Content(Serialization.JsonSerialize(new { Status = 200, Result = NewsRepository.AddByRegion(item) })); 
     } 

और कोड ऊपर मैं नियंत्रक में मिल जाएगा स्थापित करने के लिए इस तरह लिखा था। लेकिन यह हमेशा 0 रिकॉर्ड देता है हालांकि कम से कम मैंने दो क्षेत्र का चयन किया।

$.ajax({ 
       type: 'POST', 
       url: '@Url.Action("AddByRegion", "News")', 
       data: formData, 

       contentType: false, 
       processData: false, 
       success: function(data) { 
        var result = JSON.parse(data); 
        if (result.Result === "SUCCEED") { 
         toastr.success('@Resources.Resource.Success_MediaAdd'); 
         window.location.reload(); 
         return; 
        } 

        else { 
         toastr.error('@Resources.Resource.Error_Unexpected'); 
         return; 
        } 
       }, 
       error: function(error) { 

        toastr.error('@Resources.Resource.Error_Unexpected'); 
        return; 
       }, 
       beforeSend: function() { 
        waitingDialog.show('Wait...'); 
       }, 
       complete: function() { 
        waitingDialog.hide(); 
       } 
      }); 

मेरा अजाक्स विधि ऊपर है। मैं गलती कहां कर रहा हूँ?

अग्रिम धन्यवाद।

+0

क्षेत्रसूची को स्ट्रिंग करने की आवश्यकता है – charlietfl

उत्तर

6

यदि आप डेटा भेजने के लिए FormData का उपयोग कर रहे हैं, तो आपको .append() प्रत्येक व्यक्तिगत नाम/मान FormData पर जाना होगा। इसकी एक संग्रह के बाद से, आप संग्रह इंडेक्सर (जो जा शून्य आधारित है और लगातार करना होगा), उदाहरण के लिए

formData.append("Regions[0].Id", someValue); 
formData.append("Regions[0].Name", someValue); 
formData.append("Regions[1].Id", someValue); 
formData.append("Regions[1].Name", someValue); 

अपने एक पाश में ऐसा करने के बाद से शामिल करना चाहिए, तो आप उपयोग कर सकते हैं

for (var i = 0; i < region.length; i++) { 
    formData.append("Regions[" + i + "].Id", region[i]) 
} 
1
var regionList = []; 
    for (var i = 0; i < region.length; i++) { 
     var item = { 
      Id: region[i].Id, 
      Name : region[i].Name, 
     } 
     regionList.push(item); 
    } 

    regionList = JSON.stringify({ "item": regionList });//Here "item" name should match the parameter name in your Action method name in controller (item in your case.) 

फिर क्षेत्र सूची ऑब्जेक्ट को $ .ajax डेटा के रूप में पास करें।

$.ajax({ 
      type: 'POST', 
      url: '@Url.Action("AddByRegion", "News")', 
      data: regionList, 

      contentType: false, 
      processData: false, 
      .... 
     }); 
संबंधित मुद्दे