【问题标题】:Render HTML tags in kendo template as HTML将剑道模板中的 HTML 标签渲染为 HTML
【发布时间】:2014-07-10 22:39:10
【问题描述】:

我有一个存储在 SQL 数据库中的字符串,其中包含回车符。我可以通过 NotePad++ 看到回车。当我在剑道模板中显示该字符串时,一切都是一个没有回车的长字符串。

我已尝试使用字符串替换将 \r\n 替换为 <br \>。当我这样做时,我现在看到
应该在哪里换行。我认为这是呈现 HTML 标签的正确语法:

<script id="detail-template" type="text/x-kendo-template">
<div>
    <span><b>Position Description : </b>#= PositionDescription #</span>
</div>

以下是我的 jquery 剑道网格中的相关定义:

detailTemplate: kendo.template($("#detail-template").html()),
detailInit: function(e) {
                kendo.bind(e.detailRow, e.data);
            },

但我明白了:

我也尝试过使用#:#,但是我得到了:

这是我进行替换的地方(在模型实体类中)

position.PositionDescription = position.PositionDescription.ToString().Replace("\r\n", "<br />");

更新:

这里是 e.data 的控制台日志记录:

【问题讨论】:

  • 我的猜测:在处理管道的某个地方,PositionDescription 值中的换行符已经转换为&amp;lt;br /&amp;gt。尝试在 javascript 调试器中查看 e.data。
  • 我看到了 <br />在电子数据中。我用日志结果的快照更新了我的问题。关于我需要做什么的想法?

标签: javascript jquery html asp.net-mvc kendo-ui


【解决方案1】:

所需的更改是将字段添加到主网格,使用 Html.Raw,然后在主网格中隐藏列。 jquery 中的模板或 kendo detailInit 配置无需更改。

主网格 HTML:

        <tbody>
        @foreach (var item in Model)
        {
            <tr>
                <td></td>
                <td>@item.location.LocationName</td>
                <td>@item.position.department.DepartmentName</td>
                <td>@item.position.PositionName</td>
                <td>@item.PostingID</td>
                <td>@item.PositionID</td>
                <td>@Html.Raw(@item.position.PositionDescription)</td>
                <td>@item.LocationID</td>
                <td>@item.position.DepartmentID</td>
                <td>@item.PostingCreated</td>
                <td>@item.PostingQuantity</td>
            </tr>
        }
    </tbody>

【讨论】:

    【解决方案2】:

    我相信 kendo.bind 用于 View Model 绑定。

    你应该做这样的事情

    detailInit: function(e) {
                var template = kendo.template($("#detail-template").html());
                var result = template(e.data);
                $(e.detailRow).html(result);
            },
    

    这是一个有效的 JSBin:http://jsbin.com/rovuruqi/1/edit

    【讨论】:

    • 当我使用您的测试数据时,您的解决方案有效。但是,当我使用我的数据时它不起作用。我替换换行符的方式有问题吗?
    • 好的,我修好了。解决方案是将列放在主网格中,使用 Html.Raw 然后将该列隐藏在主网格中。我将发布最终解决方案。
    猜你喜欢
    • 2015-09-12
    • 1970-01-01
    • 1970-01-01
    • 2013-01-28
    • 1970-01-01
    • 2010-12-15
    • 2018-01-17
    • 1970-01-01
    • 2021-11-03
    相关资源
    最近更新 更多