Javascript stringify允许HTML元素
我正在尝试将值从MVC视图发布到控制器。 已为应用程序启用请求验证功能 但当我试图将带有HTML标记的值传递给控制器时,我并没有得到任何异常 以下是我的ajax帖子:Javascript stringify允许HTML元素,javascript,jquery,json,asp.net-mvc-4,Javascript,Jquery,Json,Asp.net Mvc 4,我正在尝试将值从MVC视图发布到控制器。 已为应用程序启用请求验证功能 但当我试图将带有HTML标记的值传递给控制器时,我并没有得到任何异常 以下是我的ajax帖子: Group.Name = model.Name(); Group.Id = model.ID(); $.ajax({ type: 'POST', url: /IndexController/SaveGroup',
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)
{
[HttpPost]
公共异步任务存储组(组)
{
当我尝试插入html标记时,这些值正在传递给控制器操作方法并被保存
启用请求验证功能后,不应将html元素传递给控制器
如何确保它在控制器上被阻止。似乎您有输入错误,因为那里的
组
似乎不是有效的对象,它未定义:
data: JSON.stringify({ group: Group }), // <-----It should have to be this Group here
MVC验证不起作用,因为您更改了提交按钮以防止默认MVC使用jquery插件Validate.js只需通过i,这段代码应该可以工作
var form = $("#YourFormID");
form.validate();
form.submit(function (e) {
e.preventDefault();
if (form.valid()) {
//Your ajax call
}
})
为什么不使用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
}
var containsHTML=//i.test(HTML文本待解析)
if(containsHTML==true){
//字符串中有HTML标记
}
否则{
//你可以走了
}
感谢您的回复。但我担心为什么MVC验证没有发生,并且允许HTML元素作为请求验证功能已启用。即使我尝试将按钮类型更改为“提交”,但仍然没有发生验证
var form = $("#YourFormID");
form.validate();
form.submit(function (e) {
e.preventDefault();
if (form.valid()) {
//Your ajax call
}
})
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
}