我正在尝试将值从MVC视图发布到控制器。 应用程序启用了请求验证功能。
但是当我试图将带有HTML标签的值传递给控制器时,我没有任何异常。
这是我的ajax帖子:
Group.Name = model.Name();
Group.Id = model.ID();
$.ajax({
type: 'POST',
url: /IndexController/SaveGroup',
async: true,
cache: false,
dataType: "json",
contentType: 'application/json; charset=utf-8',
data: JSON.stringify({ Group: group }),
success: function (data /*, textStatus, request*/) {
try {
}
catch (error) {
showExceptionWindow('Jquery Error:' + error);
}
},
error: function (request /*, status, error*/) {
handleException(request.responseText);
}
});
}
控制器代码:
[HttpPost]
public async Task<ActionResult> SaveGroup(Group group)
{
当我尝试插入html标签时,值将传递给控制器操作方法并保存。
启用请求验证功能后,不应将html元素传递给控制器。
如何确保它在控制器处被阻止。
答案 0 :(得分:0)
似乎你有一个拼写错误,因为JIRA-4208
BUGJIRA-31
ZEERA-273
BUGJIRA-33
JIRA-4209
似乎不是一个有效的对象,它是未定义的:
group
在你的后端:
data: JSON.stringify({ group: Group }), // <-----It should have to be this Group here
或者[HttpPost]
public async Task<ActionResult> SaveGroup(Group group) // group is {}
{
已经是一个对象,那么你可以直接对它进行字符串化:
Group
答案 1 :(得分:0)
MVC验证剂量工作,因为你已经改变了提交按钮以防止默认mvc使用jquery插件Validate.js只是通过我,这段代码应该工作
<html>
<head>
<meta charset="utf-8" />
<title>HBL</title>
<script src="https://unpkg.com/vue"></script>
<script src="esterno.js"></script>
</head>
<body>
<div id="application">
<greeting></greeting>
</div>
</body>
答案 2 :(得分:0)
为什么不使用HTML解析器来检测HTML元素注入?这可以是一个干净的JS解决方案
var containsHTML = /<[a-z][\s\S]*>/i.test("<p>HTML text to be parsed</p>")
if(containsHTML==true){
//There are HTML tags inside the string
}
else{
//You're good to go
}