如何在kendo网格的详细模板中转义html编码

时间:2018-06-14 05:28:23

标签: kendo-grid kendo-asp.net-mvc

我有一个带有详细模板的剑道网格。这是剑道MVC网格。我从服务器获得了一些带有html文本的数据。

让我们说父网格数据就像这个“<span class='text-red'>Test</span>

在父网格中,我像这样绑定此列。

columns.Bound(m => m.Name).ClientTemplate("#if(Name=== ''){# - #}else{# #=Name# #}#");

这会给我输出Test

在这个网格的详细模板中,我使用子网格Read方法获得了一些其他数据,该方法也有一些html数据。让孩子网格得到“<span class='text-green'>Hi</span>

我正在绑定这样的数据。

columns.Bound(m => m.ChildName).ClientTemplate("\\#if(ChildName== ''){\\# - \\#}else{\\# \\#=ChildName\\# \\#}\\#")

但是这给了我<span class='text-green'>Hi</span>的输出,但我希望输出只是Hi。为什么它显示整个HTML?为什么它不像父网格那样对待?我希望文本Hi与css一起应用,就像父网格一样

2 个答案:

答案 0 :(得分:0)

解决。子网格读取编码html的调用。我正在获取"&lt;span class=&#x27;&#x27;&gt;Test&lt;/span&gt;"等数据。所以我修改了子网格clientTemplate来调用java-script函数,它将提供正确的数据。

columns.Bound(m => m.ChildName).ClientTemplate("\\#=escapeNameEncode(ChildName)\\#")

JavaScript函数

    escapeNameEncode(name: string) {

        if ($.trim(name) == '') {
            return '-';
        } else {
            var decodedString = $('<div>').html(name).text();
            return decodedString;
        }
    }

答案 1 :(得分:0)

将.Encoded(false)设置为向下钻取列:

columns.Bound(m => m.ChildName).ClientTemplate("\\#if(ChildName== ''){\\# - \\#}else{\\# \\#=ChildName\\# \\#}\\#").Encoded(false)