asp.net-mvc-3 – 有没有办法通过AJAX将“C#”对象传递给控制器​​?

通过jQuery ajax将字符串传递给控制器​​动作很简单,但是可以将一组变量序列化为对象,将其发送到控制器,并让控制器将其识别为对象吗?

例如:

在服务器中,您有一个Obj类:

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

在控制器中,您有一个期望Obj对象的方法

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

在Jquery中是否有一种方法可以将一些JavaScript变量序列化为类Obj,然后通过AJAX帖子将其发送到MVC控制器动作?

最佳答案
当然,我们假设您有一个强类型视图:

@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)
{
    ...
}

关于这个Obj的一个评论,让它有公共属性而不是一些字段:

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

转载注明原文:asp.net-mvc-3 – 有没有办法通过AJAX将“C#”对象传递给控制器​​? - 代码日志