Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在HTML中注入Javascript代码片段_Javascript_Asp.net Mvc - Fatal编程技术网

在HTML中注入Javascript代码片段

在HTML中注入Javascript代码片段,javascript,asp.net-mvc,Javascript,Asp.net Mvc,我有一个文本框,用户可以在其中输入html代码片段 示例:用户在字段中输入 // <![CDATA[ <tr> <td> #= Position # </td> <td> #= Description # </td> <td> #= Location #

我有一个文本框,用户可以在其中输入html代码片段

示例:用户在字段中输入

// <![CDATA[
    <tr>
        <td>
            #= Position #
        </td>
        <td>
            #= Description #
        </td>
        <td>
            #= Location #
        </td>
        <td>
            <a href="@Url.Action("Delete")/#= Id #" class="delete-link">Delete</a>
        </td>
    </tr>
// ]]>
//
#=位置#
#=说明#
#=位置#
// ]]>
我将它保存到数据库中,并在客户端ui中按需调用它作为KTemplatePart.Script(KendoUI模板)

看法

@Html.Script(
@
@Model.KTemplatePart.Script
)
其中html.Script是一个html助手

我的问题是它在客户端ui中变形

<script id="jobTemplate" type="text/javascript" >

    &lt;![CDATA[

        &lt;tr&gt;
            &lt;td&gt;
                #= Position #
            &lt;/td&gt;
            &lt;td&gt;
                #= Description #
            &lt;/td&gt;
            &lt;td&gt;
                #= Location #
            &lt;/td&gt;
            &lt;td&gt;
                &lt;a href=&quot;@Url.Action(&quot;Delete&quot;)/#= Id #&quot; class=&quot;delete-link&quot;&gt;Delete&lt;/a&gt;
            &lt;/td&gt;
        &lt;/tr&gt;

    // ]]&gt;

         </script>

![CDATA[
tr
运输署
#=位置#
/运输署
运输署
#=说明#
/运输署
运输署
#=位置#
/运输署
运输署
a href=“@Url.Action(“Delete”)/#=Id#”class=“Delete link”Delete/a
/运输署
/tr
// ]]

是否有解决方法?

这是出于安全原因设计的,以防止脚本注入、攻击

允许将HTML插入DOM会使应用程序易受攻击,因此默认情况下,输入会被转义

看起来KendoUI没有内置的方法来卸载HTML,但很容易做到:

function htmlDecode(input){
  var e = document.createElement('div');
  e.innerHTML = input;
  return e.childNodes.length === 0 ? "" : e.childNodes[0].nodeValue;
}
发件人:
尝试使用此javascript筛选器

function filter(value) {
  const removeTag = new RegExp("(<[a-zA-Z0-9]+>)|(</[a-zA-Z0-9]+>)", "g");
  return value.replace(removeTag, "");
}
函数过滤器(值){
const removeTag=new RegExp(“()|()”,“g”);
返回值。替换(removeTag,“”);
}
您可以在codepen上看到结果


是的,我知道,但有没有办法禁用它?我只是为了一个非常特殊的案子。。。
function filter(value) {
  const removeTag = new RegExp("(<[a-zA-Z0-9]+>)|(</[a-zA-Z0-9]+>)", "g");
  return value.replace(removeTag, "");
}