Есть ли способ передать объект "C #" в контроллер через AJAX? - PullRequest
5 голосов
/ 20 июля 2011

Достаточно просто передать строку в действие контроллера через jQuery ajax, но возможно ли сериализовать группу переменных в объект, отправить ее контроллеру и заставить контроллер распознать ее как объект?

Например:

На сервере у вас есть класс Obj как таковой:

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

А в контроллере у вас есть метод, который ожидает объект Obj

public JsonResult UpdateObj(Obj obj){
    //stuff
}

Есть ли способ в Jquery сериализовать некоторые переменные JavaScript в класс Obj, а затем отправить его в действие контроллера MVC через сообщение AJAX?

Ответы [ 2 ]

9 голосов
/ 20 июля 2011

Конечно, предположим, что у вас строго типизированное представление:

@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>

и в действии контроллера:

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

Просто замечание об этом объекте, сделайте его общедоступнымсвойства вместо некоторых полей:

public class Obj
{
    public string A { get; set; }
    public int B { get; set; }
    public double C { get; set; }
}
0 голосов
/ 20 июля 2011

jQuery :::

.ajax{
     type: "POST",
     url: "yourUrl/UpdateObj",
     data: $("someHTMLForm").serialize(),
     contentType: "application/json; charset=utf-8"
     success: function(data){
           //data will house your JsonResult
     }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...