Rég*_*IOX 11 javascript c# ajax asp.net-mvc asp.net-mvc-4
在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')
});
Run Code Online (Sandbox Code Playgroud)
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; }
}
Run Code Online (Sandbox Code Playgroud)
我的参数始终为null.我试图更改contentType但它仍然无法正常工作.我的错误在哪里?我发现了一些帖子,但我没有找到我做错了什么.
非常感谢.
dan*_*wig 24
Propr1和Propr2javascript对象,但在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')
});
Run Code Online (Sandbox Code Playgroud)
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; }
}
Run Code Online (Sandbox Code Playgroud)