【发布时间】:2017-05-01 15:25:03
【问题描述】:
我有一个 asp.net mvc4 应用程序,我正在视图内使用 JSON.Encode 序列化一个 c# 对象(使用 Razor)。发生的情况是,其中有空格的部分,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
}
});
};
【问题讨论】:
-
你做错了。向我们展示您的代码。
-
你需要在那个字符串两边加上双引号。
-
你想在这里做什么?
value不是<tr>元素的有效 html 属性。而且无论如何都需要引用 -
我正在尝试存储编码对象,因此当在该行上单击表格时,我可以将编码值与 ajax 一起传递给服务器端代码。我将使用 ajax 发布我的函数。当部件名称中没有空格时,这可以正常工作。
-
根本没有编辑任何内容,所以为什么要在视图中生成所有额外的 html,然后将其全部原封不动地发送回去。只需包含
transaction对象的 ID -<tr data-id="@transaction.ID">...和$('tr').click(function() { $.post('@Url.Action(...)', { id: $(this).data('id'), function(data) { // do stuff}); });即可回发 ID
标签: c# json asp.net-mvc-4 razor