2011-07-20 10 views
5

Bir jQuery ajax aracılığıyla bir denetleyici eylemine bir dizge geçirecek kadar basit, ancak bir değişken grubunu bir nesneye serileştirmek, denetleyiciye göndermek ve denetleyiciyi bir nesne olarak tanıması mümkün mü?AJAX aracılığıyla bir denetleyiciye "C#" nesnesini iletmenin bir yolu var mı?

Örneğin:

class Obj{ 
    string a; int b; double c; 
} 

ve kontrol olarak, bir Obj nesnesi

public JsonResult UpdateObj(Obj obj){ 
    //stuff 
} 
bekleniyor bir yöntemi vardır: server

, aşağıdaki gibi bir sınıf Obj sahip

Jquery'de bazı JavaScript varyasyonlarını Obj sınıfına serileştirmenin ve ardından bir AJAX gönderi aracılığıyla MVC denetleyici eylemine yollamanın bir yolu var mı?

+1

Zaten MVC 3 içine yerleşiktir. JSON isteğinin yalnızca Obj 'deki özellikler ile eşleşmesi gerekir ve model bağlayıcılar sizin için değerleri bağlar. – Buildstarted

cevap

9

Tabii, sen kesinlikle yazılı görünüme sahip varsayalım:

public ActionResult SomeAction(Obj obj) 
{ 
    ... 
} 

bu Obj hakkında Sadece bir açıklama, bunun yerine kamu özelliklere sahip olun:

@model Obj 

<script type="text/javascript"> 
    // Serialize the model into a javascript variable 
    var model = @Html.Raw(Json.Encode(Model)); 

    // post the javascript variable back to the controller 
    $.ajax({ 
     url: '/home/someAction', 
     type: 'POST', 
     contentType: 'application/json; charset=utf-8', 
     data: JSON.serialize(model), 
     success: function(result) { 
      // TODO: do something with the results 
     } 
    }); 
</script> 

ve denetleyici eylem

bazı alanlar:

public class Obj 
{ 
    public string A { get; set; } 
    public int B { get; set; } 
    public double C { get; set; } 
} 
+0

... ve daha sonra denetleyici yöntemiyle onu serileştirirsiniz ... –

+1

@Robert Harvey, hiçbir şey olmadan, ASP.NET MVC 3 sizin için yapar. –

+0

Tüm Html.Raw katı görünüyor, ancak modeli kodladığımda sözdizimi hataları alıyorum. –

0

jQuery :::

.ajax{ 
    type: "POST", 
    url: "yourUrl/UpdateObj", 
    data: $("someHTMLForm").serialize(), 
    contentType: "application/json; charset=utf-8" 
    success: function(data){ 
      //data will house your JsonResult 
    } 
} 
+0

Seri hale getirmeye gerek yoktur. application/json contentType, MVC'ye JSON nesnesini dinamik nesneyle .NET nesnesine eşleştirmesini söyler - System.Web.Services.Script.JavaScriptSErializer sınıfı – Jonathan

İlgili konular