2012-09-24 22 views
15

Bugün bunu çözmeye çalışmak için 8 saatimi harcadım. Çok sayıda çözüm gördüm, ancak aynı sonuçları alamıyorum. ASP.Net'e nispeten yeni olmanın herşeye sahip olduğu bir önsezim var.jQuery gönderi dizisi - ASP.Net MVC 4

Şanssız taklit etmeye çalıştığım en son soru. https://stackoverflow.com/questions/10007722/post-array-as-json-to-mvc-controller#=

How to post an array of complex objects with JSON, jQuery to ASP.NET MVC Controller?

Sorunun Temel Rundown : benim denetleyicisine aktarmak istiyorum json nesneler dizisi var. Veriyi aktardığımda, örneğin 3 öğeyi söyleyebilmemiz, ancak değerlerinin geçilmemesi ya da hiçbir şeyin geçilmediğini gösterir. Firebug bunu geçtiğini gösteriyor, bu yüzden bir şeyin doğru kurulmadığını ve bu değişkenin C# tarafında doğru bir şekilde ayarlanmasına izin vermeyeceğini varsayıyorum.

bir kaç şey denedim ve kötü listesi aşağıda onları: Kurulum 1: Ben ikinci linkten görülebilir neyi alay çalıştı:

$.ajax({ 
     type: 'Post', 
     cache: false, 
     url: '/Workflow/Home/UpdateStepPositions', 
     data: { 'steps': ['1','2','3'] }, 
     async: false, 
     success: function (data) { 
      console.debug(data); 
     }, 
     error: function (data) { 
      console.debug(data); 
     } 
    }); 

Controller 
[HttpPost] 
    public ActionResult UpdateStepPositions(string[] steps){ 

     var bresults = new { 
      Success = false, 
      Message = "Unable to update step positions." 
     }; 

     return Json(bresults); 
    } 

Hatta çalışan bu kadar basit kurulum alamadım. .

list = new Array(); 
    list.push({ "step": 1, "position": 1 }); 
    list.push({ "step": 2, "position": 2 }); 
    list.push({ "step": 3, "position": 3 }); 

    $.ajax({ 
     type: 'Post', 
     cache: false, 
     url: '/Workflow/Home/UpdateStepPositions', 
     data: JSON.stringify({ 'steps': list }), 
     async: false, 
     success: function (data) { 
      console.debug(data); 
     }, 
     error: function (data) { 
      console.debug(data); 
     } 
    }); 

    Controller 
    [HttpPost] 
    public ActionResult UpdateStepPositions(List<UpdatedSteps> steps){ 
     var bresults = new { 
      Success = false, 
      Message = "Unable to update step positions." 
     }; 

     return Json(bresults); 
    } 

    Class 
    public class UpdatedSteps { 
    public string Step { get; set; } 
    public string Position { get; set; } 
} 

herkes w ışık tutmayı Can: Bu

Kur 2 .... işlevine alır ve geçirilen şey yoktu gösteriyor şapka eksik veya bana doğru yönde işaret mi? Umarım basit bir şey ve sadece bir yeni hata!

+2

kesinlikle gerekli olmadıkça, sen 'eşzamansız kullanarak olmamalıdır ajax çağrısı. AJAX'ın asenkron olması gerekiyor, bunu çevirerek tarayıcının ajax çağrısı sırasında yanıt vermemesine neden olabilirsiniz. – MrOBrian

cevap

38

MVC, contentType tarafından hangi tür verilerin alındığını algılar. İşte çalışıyor örnek: istekle Şimdi

$(function() { 
    $.ajax({ 
     type: 'Post', 
     dataType: 'json', 
     url: '/Workflow/Home/UpdateStepPositions', 
     data: JSON.stringify({ steps: ['1', '2', '3'] }), 
     contentType: 'application/json; charset=utf-8', 
     async: false, 
     success: function (data) { 
      console.debug(data); 
     }, 
     error: function (data) { 
      console.debug(data); 
     } 
    }); 
}); 

herşey yolunda:

Content-Type:  application/json; charset=utf-8 
X-Requested-With: XMLHttpRequest 

ve yanıtı: bir in FALSE:

Content-Type:  application/json; charset=utf-8 
+0

Bunu deneyeceğim ve rapor edeceğim. – Silent

+0

Ok Kopyaladım ve bu kodu yapıştırdım ve kontrolörde ne var ne varsa, aynı konu gün içinde mücadele ediyordum! steps = null – Silent

+0

@Austin Reynolds Üzgünüz, yeni çözümü deneyin. – webdeveloper