![](/img/trans.png)
[英]How to pass/map Date object from JavaScript to DateTime object in C# MVC controller action through ajax post?
[英]How to pass a javascript object to a C# MVC 4 controller
在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
,但是在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; }
}
您为data
属性传递的值应该是一个对象,而不是字符串:
data: myData,
属性名称必须匹配:
var myData = { Prop1: '', Prop2: ''};
您需要在参数值上使用[FromBody]
属性:
public ActionResult SubmitMyData([FromBody] MyParamModel myParam)
并且模型类型上的属性必须是public
:
public class MyParamModel
{
public string Prop1 { get; set; }
public string Prop2 { get; set; }
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.