我的MVC控制器中有一个动作
public FileStreamResult CustomerOrdersAsExcel(ExcelColumn column)
ExcelColumn模型:
public class ExcelColumn
{
public string Header { get; set; }
public List<EnumLocalized> EnumLocalizations { get; set; }
}
然后我使用ajax传递我的ExcelColumn
let ajaxSettings = {
type: 'GET',
xhrFields: { responseType: 'blob' },
data: column,
contentType: 'application/json; charset=utf-8',
success: (data) => {
... on success
}
}
};
列是具有
的对象"{"header":"Order type",
"enumLocalizations":[
{
"key":1,
"value":"Customer order"
},
{
"key":2,
"value":"Webshop"
},
{
"key":4,
"value":"Service order"
}
]}"
现在,当我在控制器中接收数据时,Header绑定正常,但EnumLocalizations不是。 它有3个元素,其中每个元素都填充了默认值Key = 0和Value = null。 我已经尝试过JSON.stringfy这个并使用传统的:对于jquery设置是true但是这两个都没有用。 你知道什么可能导致绑定失败吗?
更新: 我认为错误是由jquery发送的格式
header:Order type
enumLocalizations[0][key]:1
enumLocalizations[0][value]:Customer order
enumLocalizations[1][key]:2
enumLocalizations[1][value]:Webshop
enumLocalizations[2][key]:4
enumLocalizations[2][value]:Service order
我认为它应该像
header:Order type
enumLocalizations[0].key:1
enumLocalizations[0].value:Customer order
enumLocalizations[1].key:2
enumLocalizations[1].value:Webshop
enumLocalizations[2].key:4
enumLocalizations[2].value:Service order
你知道我怎么改变它?
答案 0 :(得分:2)
您无法使用GET
发送大量数据,请改用POST
GET
将通过网址(which is limited to about 2000 characters depending on the browser)
let ajaxSettings = {
type: 'POST',
xhrFields: { responseType: 'blob' },
dataType: 'json',
contentType: 'application/json; charset=utf-8',
success: (data) => {
... on success
}
}
};
答案 1 :(得分:2)
像@Dabbas所说,将ajax方法更改为POST
以发送大数据(最大网址长度为255个字符),并且不使用JSON绑定数据,这不是必需的。
试试看,如果不起作用,我会删除:
var obj = {
"header":"Order type",
"enumLocalizations":[
{
"key":1,
"value":"Customer order"
},
{
"key":2,
"value":"Webshop"
},
{
"key":4,
"value":"Service order"
}
]
};
let ajaxSettings = {
type: 'POST',
xhrFields: { responseType: 'blob' },
data: obj,
success: (data) => {
... on success
}
}
};