0
我有一个asp.net mvc4应用程序,我在视图中使用JSON.Encode序列化c#对象(使用Razor)。会发生什么情况是,在其中有空间的零件,JSON.ENCODE将尝试将其转换为每个空间的多个变量。JSON.ENCODE将空间分解为多个变量
示例。 Part.Name =“A B C” JSON编码将产生:{“Name”:“A”B =“”C =“”}
我该如何防止这种情况?
使用剃刀, 代码:
foreach (Transaction transaction in Model)
{
<tr value= @Html.Raw(Json.Encode(transaction)) onclick="commitTRValuesToForm(this)">
<td>@transactionLite.system</td>
<td>@FormattingUtility.DecimalTo12HR(transactionLite.Time)</td>
<td>@transactionLite.Intials</td>
}
Ajax调用:
function commitTRValuesToForm(rowInstance)
{
var jsonString = $(rowInstance).attr('value');
var src = '@Url.Action("JsonResultForm", "Home", new { area = "Part" })'
$.ajax({
type: "POST",
url: src,
dataType: "json",
data: jsonString,
contentType: "application/json; charset=utf-8",
success: function (data) {
//do stuff
}
});
};
您正在做的事情完全错误。告诉我们你的代码。 – SLaks
你需要在该字符串周围加双引号。 – DavidG
你在这里试图做什么? 'value'不是'
回答
使用斯蒂芬建议,
代替:
解决了JSON.ENCODE给我的问题。
更新: 此外,据说价值是一种非法的属性,但替代方案从未提及;我后来偶然发现:数据值。使用数据值更好,因为它不是非法的,它也会带来类型。所以,如果我想传递一个数组像这样,
检索时,该值将是一个字符串值作为 “[VAL1,VAL2]”
现在代替,
会返回值为一个数组,2个元素[0] = val1和[1] = val2
来源
2016-12-16 00:08:12 eaglei22
这与'JSON.Encode无关';你正在生成非法的HTML – SLaks
我对后端代码更加熟练,我仍然在学习前端的东西,到底发生了什么?为什么它只能使用单一的而不是两个,为什么它没有任何引号(没有错误抛出)但多个空格使事情出错? – eaglei22
比较“查看源代码”(显示你的服务器发送的内容)到DOM检查器(显示浏览器如何解析它) – SLaks
相关问题