我可以在Kendo ListView的Kendo模板的字段上将Encoded设置为False吗?

时间:2019-03-07 17:17:23

标签: razor kendo-ui kendo-asp.net-mvc richtext

我可以在Kendo ListView的Kendo模板的字段上将Encoded设置为False吗? 在这里,我在列表上有一个网格。正如您在列表中看到的那样,富文本格式将被显示为HTML,而在Grid的enoccing设置为False的网格中,RIch文本将被显示为文本。我可以在ListView中想要的字段(Comment)上将编码设置为false吗?如果不是,那我有什么选择,因为我无法在Kendo模板中渲染编辑器...编辑:目标是删除仅需要列表的网格。

               @(Html.Kendo().Grid<WorkflowItemCommentModel>()
                .Name("Grid")
                .Columns(columns =>
                {
                    columns.Bound(e => e.Comment).Width(300).Encoded(false);

                })
                .DataSource(dataSource => dataSource
                .Ajax()
                .Read(read => read.Action("CommentsRead", "WFItem").Data("getWorkflowItemID"))

                    )
                                )
                    <div class="col-sm-2"></div>
                    <div id="comments-list" class="col col-sm-10">

                        @(Html.Kendo().ListView<WorkflowItemCommentModel>()
                .Name("CommentList")
                .TagName("div")

                .Events(e => e.DataBound("onCommentListDataBound").Change("onCommentCriteriaChange"))
                .ClientTemplateId("itemCommentTemplate")
                .DataSource(dataSource =>
                {
                    dataSource.Read(read => read.Action("CommentsRead", "WFItem").Data("getWorkflowItemID"));
                    dataSource.Sort(sort => { sort.Add(f => f.CreatedDate); }).ServerOperation(false);
                })
                .Selectable(s => s.Mode(ListViewSelectionMode.Single))
                        )

模板:

    @*//WFITEM COMMENT TEMPLATE*@
<script type="text/x-kendo-tmpl" id="itemCommentTemplate">
    <div class="step">
        <div class="step-wrapper">
            <dl class="step-list-details">
                <dt class="name"><b>Name:</b>#:CreatedByUserName#  <b>Date:</b> #:CreatedDate#</dt>
                <dd class="stepNum">
                    <b>Comment:</b>
                    <div contenteditable="true">
                        #:Comment#
                    </div>
                </dd>

                <dd class="title">
                    <b>Internal Comment:</b>  #:InternalComment#
                </dd>
                <dd class="stepStatus">Status: Status Test</dd>
            </dl>
            <div class="btn btn-primary" id="viewStep">View</div>
        </div>
    </div>
</script>

我希望我的列表文本能够像在网格中一样呈现,且编码设置为false:

enter image description here

1 个答案:

答案 0 :(得分:1)

是的,您可以使用<div id="example"></div> <script> var template = kendo.template("<div id='box'>#= firstName #</div>"); var data = { firstName: "<b>Todd</b>" }; //Data with HTML tags var result = template(data); //Pass the data to the compiled template $("#example").html(result); //display "Todd" in a bold font weight </script> 强制模板不对输出进行编码。请参见documentation的以下示例:

<script>

请注意,这可能会使您的站点暴露于跨站点脚本(XSS)漏洞。至少,您可能要确保数据不包含任何GetValue标签。