Javascript stringify允许HTML元素

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',

我正在尝试将值从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)
        {
[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
}