【问题标题】:How to escape html encoding in detail template of kendo grid如何在剑道网格的详细模板中转义html编码
【发布时间】:2018-06-14 05:28:22
【问题描述】:

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

可以说父网格数据是这样的“<span class='text-red'>Test</span>

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

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

这会给我输出Test

在这个网格的详细模板中,我使用子网格读取方法获取了一些其他数据,该方法也有一些 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

【问题讨论】:

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


    【解决方案1】:

    解决了。子网格读取调用编码 html。我以"<span class=''>Test</span>" 等形式获取数据。所以我修改了子网格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;
            }
        }
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-03
        • 2023-03-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-16
        相关资源
        最近更新 更多