有没有办法通过一个“C#”对象通过AJAX控制器?
这是很简单的传递一个字符串到通过jQuery AJAX控制器动作,但有可能连载一组变量成一个对象,它发送到控制器,并有控制其识别为一个对象?有没有办法通过一个“C#”对象通过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; }
}
...然后你反序列化的控制方法,与... –
@Robert哈维,什么也没有,ASP.NET MVC 3不适合您。 –
整个Html.Raw看起来坚实,但我得到的语法错误,当我编码模式。 –
的jQuery :::
.ajax{
type: "POST",
url: "yourUrl/UpdateObj",
data: $("someHTMLForm").serialize(),
contentType: "application/json; charset=utf-8"
success: function(data){
//data will house your JsonResult
}
}
不需要反序列化。 application/json contentType通过动态序列化器告诉MVC匹配JSON对象和.NET对象 - System.Web.Services.Script.JavaScriptSErializer类 – Jonathan
它已经内置到MVC 3,JSON请求只需要匹配您'Obj'属性和modelbinders将绑定的值给你。 – Buildstarted