在MVC4中,如何将javascript对象传递给AJAX中的C#控制器?最后,我尝试了一下,但没有成功。
Javascript客户端:
var myData = {Propr1: '', Propr2: ''};
$.ajax({
type: 'POST',
data: JSON.stringify(myData),
url: '/Home/SubmitMyData',
contentType: 'application/json',
dataType: 'json',
success: alert('Youhou'),
error: alert('not good')
});
C#服务器端方法:
public ActionResult SubmitMyData(MyParamModel myParam)
{
// Do my stuff here with my parameter
return View();
}
public class MyParamModel
{
string Prop1 { get; set; }
string Prop2 { get; set; }
}
我的参数始终为null。我试图更改contentType,但仍然无法正常工作。我的错误在哪里?我找到了一些帖子,但没有发现我做错了什么。
非常感谢。
Propr1
和Propr2
为JavaScript对象,但在C#模型,你不得不Prop1
和Prop2
(缺少“R”)。stringify
发送之前的数据,并且不设置dataType
到json
。MVC可以很好地解析post参数的集合,而无需在代码中进行json序列化。contentType
,则没有必要。WebAPI应该自动检测到这一点。您可以保留它,但这是多余的。Javascript客户端:
var myData = {Prop1: '', Prop2: ''}; // #1
$.ajax({
type: 'POST',
data: myData, // #2
url: '/Home/SubmitMyData',
//contentType: 'application/json', #3
//dataType: 'json', #2
success: alert('Youhou'),
error: alert('not good')
});
C#服务器端方法:
public ActionResult SubmitMyData(MyParamModel myParam)
{
// Do my stuff here with my parameter
return View();
}
public class MyParamModel // #4
{
public string Prop1 { get; set; }
public string Prop2 { get; set; }
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句