以下jQuery代码:
$.param({
Parts: [{ hasLabel: "label", hasType: "type", hasIndex : 1 }],
LastKey : "LastKey",
Term : "Term"
})
给出以下输出:
"Parts%5B0%5D%5BhasLabel%5D=label&Parts%5B0%5D%5BhasType%5D=type&Parts%5B0%5D%5BhasIndex%5D=1&LastKey=LastKey&Term=Term"
它解码为(使用decodeURI()):
"Parts[0][hasLabel]=label&Parts[0][hasType]=type&Parts[0][hasIndex]=0&LastKey=LastKey&Term=Term"
但是,MVC中的默认模型绑定程序预期如下:
"Parts[0].hasLabel=label&Parts[0].hasType=type&Parts[0].hasIndex=0&LastKey=LastKey&Term=Term"
我正在寻找一个Javascript来强制将编码的字符串转换成一个(仍然编码的)字符串,但是一个解码到正确的模型绑定约定的字符串。
发布于 2013-07-10 20:48:05
以下是其中的诀窍:
var params = "Parts[0][hasLabel]=label&Parts[0][hasType]=type&Parts[0][hasIndex]=0&LastKey=LastKey&Term=Term";
var mvcParams = params.replace(/\[([^0-9]+)\]/g,'.$1');
编辑:
若要处理编码的字符串,请执行以下操作:
var params = "Parts%5B0%5D%5BhasLabel%5D=label&Parts%5B0%5D%5BhasType%5D=type&Parts%5B0%5D%5BhasIndex%5D=1&LastKey=LastKey&Term=Term";
var mvcParams = params.replace(/%5b([^0-9]+)%5d/gi,'.$1');
https://stackoverflow.com/questions/17580471
复制相似问题