我正在尝试使用jquery ajax发布整个表单。这是我的ajax电话:
$(document).ready(function() {
$('#btnadd').click(function () {
$.ajax({
type: "POST",
url: "@Url.Action("SaveUser", "UserMenu")",
data: $('#SaveUserForm').serialize(),
datatype: "json",
traditional: true,
success: function(d) {
var r = JSON.parse(d);
if (r.Result === 'true') {
//Wohoo its valid data and processed.
alert('success');
} else {
alert('not success');
}
},
error: function() {
}
});
});
});
当我发布没有特殊字符的表单时它很好用但是如果任何字段包含特殊字符(假设我有一个文本字段密码,包含字符<>)它不会触发控制器操作结果。 关于这个问题,我已经厌倦了许多解决方案,但对我来说,这项工作没有。
以下是我的控制器ActionResult
,用于接收ajax请求:
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<JsonResult> SaveUser(AdminUserPanel model)
{
//some code for save into database
return Json(new { Result = true });
}
我是否需要更改我的Ajax功能或任何额外的设置(webconfig或其他)?
答案 0 :(得分:0)
这是因为ASP.NET认为它是潜在的危险文本。 将[AllowHtml]属性用于特定字段
示例:
In [1384]: for k in dct:
...: print dct[k]
In [1347]: df_A
Out[1347]:
A_1 A_2
0 1 0
1 1 0
2 0 1
In [1350]: df_B
Out[1350]:
B_1 B_2
0 0 0
1 0 1
2 1 1
In [1355]: df_C
Out[1355]:
C_1 C_2
0 0 0
1 1 1
2 1 0
或使用[ValidateInput(false)]进行整个操作
public class BlogEntry {
public int UserId {get;set;}
[AllowHtml]
public string BlogText {get;set;}
}