【发布时间】:2016-06-06 02:14:23
【问题描述】:
我正在尝试通过 ajax 将 javascript 对象数组传递给 MVC 操作;这是我的代码:
阿贾克斯:
$.ajax({
type: "POST",
url: rv + "ajxConversation/wrcrgmdisc",
dataType: "json",
traditional: true,
data: JSON.stringify(pllst),
contentType: "application/json",
async: true,
global: false,
cache: false,
success: function (d) {
//Whatever
}
});
MVC:
public JsonResult wrcrgmdisc(List<DCConvGmPlayersDisc> pllst)
{
}
[DataContract]
public class DCConvGmPlayersDisc
{
[DataMember]
public string clr = "";
[DataMember]
public string tlt = "";
[DataMember]
public string fnm = "";
[DataMember]
public string lnm = "";
}
现在,我的问题是,在 MVC 方面,它似乎接收到一个包含所有项目的数组,但它们都有空属性,而不是空属性:如果我发送一个包含 5 个项目的 JS 数组,我的 pllst 计数在 MVC 端是 5,但每个项目的每个属性都是空的:在调试模式下的服务器端,我看到 pllst[0].clr 是一个空字符串,pllst[0].tlt 是空的,等等...... .
或
谁能告诉我一种通过 Ajax 或页面链接将 Javascript 对象数组(不是字符串数组或 int 数组,例如 int[] 变量)传递给 MVC Action 的 FUNCTIONNAL 方式这表明了这一点:我在整个网络上搜索了一个功能齐全、简单、标准的方式(这不是标准的 Ajax:$.get('/controller/MyAction', { vals: arrayOfValues }, function (data) {. ..} ) 这样做,我还没有找到一个,即使在 Stackoverflow 上也是如此!
感谢
【问题讨论】:
-
您需要编辑问题以显示
pllst是什么 -
是的。图片很烂。提供文本真的很容易,而且整个负载更容易理解。
-
你的模型只有字段,没有属性(
{ get; set; })所以DefaultModelBinder不能设置值
标签: javascript arrays ajax asp.net-mvc