SORU
21 Kasım 2008, Cuma


Nasıl dize dizisi bir form olmadan MVC Denetleyicisi ASP.NET yazı gönderebilir miyim?

Kendimi ASP.NET MVC ve JQuery öğretmek için küçük bir uygulama yaratıyorum, ve bir sayfa da seçilebilir öğelerin bir listesidir. Sonra bir düğme ve bir Liste (veya buna benzer) benim denetleyicisi için seçilen öğeleri kimliklerini içeren göndermek için, DV Sonrası işlevini kullanarak istiyorum.

Seçilen elemanların kimlikleri ile bir dizi başardı, ve şimdi o yazı istiyorum. Bir şekilde yapabilirim bunun için bir kukla şeklinde sayfama, bir gizli değer, ve sonra set gizli değeri ile seçili öğeleri ve sonrası bu form; bu crufty görünüyor ama.

Daha temiz bir yol bu, doğrudan denetleyici dizi göndererek ulaşmak için var mı? Bir kaç farklı şeyler denedim ama kumanda alıcı bu verileri harita yok gibi görünüyor. İşte kod şimdiye kadar:

function generateList(selectedValues) {
   var s = {
      values: selectedValues //selectedValues is an array of string
   };
   $.post("/Home/GenerateList", $.toJSON(s), function() { alert("back") }, "json");
}

Ve sonra benim Denetleyicisi bu gibi görünüyor

public ActionResult GenerateList(List<string> values)
{
    //do something
}

Tüm ben almak için yönetilen bir "boş" kontrolör parametre...

Herhangi bir ipucu?

CEVAP
21 Kasım 2008, Cuma


Cevabım yaptım test uygulaması için kodu eklemeyi değiştirilmiş.

Güncelleme: 'geleneksel' bu tekrar (başına @DustinDavis cevap). çalışması için doğru ayarı için bir WordPress kullanmak güncelledik

İlk javascript:

function test()
{
    var stringArray = new Array();
    stringArray[0] = "item1";
    stringArray[1] = "item2";
    stringArray[2] = "item3";
    var postData = { values: stringArray };

    $.ajax({
        type: "POST",
        url: "/Home/SaveList",
        data: postData,
        success: function(data){
            alert(data.Result);
        },
        dataType: "json",
        traditional: true
    });
}

Ve burada kontrol benim sınıfta kodu:

public JsonResult SaveList(List<String> values)
{
    return Json(new { Result = String.Format("Fist item in list: '{0}'", values[0]) });
}

Bu javascript fonksiyonu çağırdığımda bir uyarı söylediler "listedeki İlk madde: 'öğe1".' Bu yardımcı olur umarım!

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • 3biblecom

    3biblecom

    23 NİSAN 2011
  • Ben Schoon

    Ben Schoon

    23 Kasım 2012
  • Doc Adams

    Doc Adams

    20 HAZİRAN 2007