【问题标题】:KendoUI Editor Template Issue With KendoUI GridKendo UI 编辑器模板问题与 Kendo UI Grid
【发布时间】:2013-08-22 23:06:33
【问题描述】:

我有一个 KendoUI Grid,它输出一些外键下拉列表和其他字段,如日期,并且由于某种原因,在呈现控件之前和之后添加了一些随机文本/字符。在下面的这个块中,<$Bw$> <$Bx$> 在呈现选择列表之前作为文本输出到浏览器,然后是<$By$>

<td role="gridcell" data-container-for="StateProvinceId">&lt;$Bw$&gt;
<!--$Bw$-->&lt;$Bx$&gt;<span style="" class="k-widget k-dropdown k-header" unselectable="on" role="listbox" aria-haspopup="true" aria-expanded="false" tabindex="0" aria-owns="StateProvinceId_listbox" aria-disabled="false" aria-readonly="false" aria-busy="false"><span unselectable="on" class="k-dropdown-wrap k-state-default"><span unselectable="on" class="k-input">&nbsp;</span><span unselectable="on" class="k-select"><span unselectable="on" class="k-icon k-i-arrow-s">select</span></span></span><input data-val="true" data-val-number="The field StateProvinceId must be a number." data-val-required="The StateProvinceId field is required." id="StateProvinceId" name="StateProvinceId" type="text" value="0" data-role="dropdownlist" style="display: none;" data-bind="value:StateProvinceId" class="valid"></span><script>
    jQuery(function(){jQuery("#StateProvinceId").kendoDropDownList({"dataSource":[],"dataTextField":"Text","dataValueField":"Value"});});
</script><!--$Bx$-->&lt;$By$&gt;
<!--$By$--><span class="field-validation-valid" data-valmsg-for="StateProvinceId" data-valmsg-replace="true"></span></td>

FK 编辑器模板只是默认设置。

@using Kendo.Mvc.UI

@model object
           
@(
 Html.Kendo().DropDownListFor(m => m)        
        .BindTo((SelectList)ViewData[ViewData.TemplateInfo.GetFullHtmlFieldName("") + "_Data"])
)

所有正在渲染的具有 KendoUI 编辑器模板的字段都会发生这种情况。

网格代码

@using Kendo.Mvc.UI
@model Data.DataModels.Person

@(Html.Kendo().Grid<Data.ViewModels.LicenseVM>()
    .Name("LicensesGrid")
    .Columns(columns =>
    {
        columns.ForeignKey(p => p.StateProvinceId, (System.Collections.IEnumerable)ViewData["StateProvinces"], "StateProvinceId", "Name")
            .Title("State");
        columns.ForeignKey(p => p.LicenseTypeId, (System.Collections.IEnumerable)ViewData["LicenseTypes"], "LicenseTypeId", "Name")
            .Title("Type");
        columns.Bound(p => p.LicenseNumber).Width(150);
        columns.Bound(p => p.ExpirationDate).Width(150);
        columns.Command(commands =>
        {
            commands.Edit(); // The "edit" command will edit and update data items
            commands.Destroy(); // The "destroy" command removes data items
        }).Title("").Width(200);
    })
    .ToolBar(toolBar =>
        {
            toolBar.Create().Text("Add License");
        })
    .DataSource(dataSource => dataSource
        .Ajax()
        .Events(events => events.Error("error_handler"))
        .Model(model =>
        {
            model.Id(p => p.PersonLicenseId);
            model.Field(p => p.PersonId).Editable(false).DefaultValue(@Model.PersonId);
        })
        .Read(read => read.Action("_GetLicenses", "Person", new { PersonId = Model.PersonId }))
        .Create(create => create.Action("_AddLicense", "Person"))
        .Update(update => update.Action("_EditLicense", "Person"))
        .Destroy(destroy => destroy.Action("_DeleteLicense", "Person"))
    )
)

<script type="text/javascript">
    function errorHandler(e) {
        if (e.errors) {
            var message = "Errors:\n";
            $.each(e.errors, function (key, value) {
                if ('errors' in value) {
                    $.each(value.errors, function () {
                        message += this + "\n";
                    });
                }
            });
            alert(message);
        }
    }
</script>

【问题讨论】:

  • 有什么方法可以提供一个有效的 jsBin/jsFiddle 示例来演示该问题吗?我知道您正在使用 .NET 服务器助手,因此可能会有点困难,但是您的场景的 repo 演示将对调试有很大帮助(即使只是为了了解您的配置)!
  • @Todd 考虑到 .NET 的使用,我认为我不能轻易地复制它……不过,我对其他一些想法持开放态度,通过 Twitter 给我发消息,也许我们可以打开一个故障排除的电子邮件交换?
  • 一个可能的问题是 JSON 数据的格式。如果其中有一些不寻常的字符,则可能会导致您看到的渲染异常。您可以分享您尝试绑定到网格的 JSON 吗?
  • 希望上面的图片值一千字。在 Azure 上部署此解决方案时,我看不到这些字符,因此它仅通过 localhost/development 发生。
  • 这是一个很奇怪的问题。请尝试禁用 AntiXSS 库(来自 web.config)。另一个问题可能是编辑器模板损坏(无论出于何种原因)。用 google 搜索 几乎是不可能的 :)

标签: asp.net-mvc kendo-ui kendo-grid kendo-asp.net-mvc mvc-editor-templates


【解决方案1】:

这可能是 BrowserLink 添加的标记。我建议您在这种情况下禁用它。

http://www.poconosystems.com/software-development/how-to-disable-browser-link-in-visual-studio-2013/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多