【发布时间】:2014-04-16 14:24:52
【问题描述】:
我的 Kendo 自动完成控件成功检索到 Json 列表。不幸的是,它两次调用 MVC 控制器方法并创建了两个建议列表。重复列表直接显示在第一个列表的后面。当从第一个建议列表中选择一个值时,该列表会消失,但重复的列表仍然可见。我正在为自动完成控件使用包装器,如下所示。我已经确认没有在任何页面脚本中引用该控件。该控件位于一个局部视图中,该局部视图被一次性添加到一个 cshtml 视图中 (@{ Html.RenderPartial("_AddLineItem"); })。
@(Html.Kendo().AutoComplete()
.Name("CategorySearch")
.DataTextField("CategoryName")
.Filter("contains")
.DataSource(source =>
{
source.Read(read =>
{
read.Action("PopulateCategories", "Default");
})
.ServerFiltering(false);
})
)
生成的 HTML 显示建议列表两次,但关联的输入控件只存在一次。以下标签在生成的 HTML 中出现了两次(这些是建议列表的标签,它们还包含 li 标签和结束 div 标签,从下面粘贴的 HTML 中删除):
<div class="k-animation-container" style="left: 431.13px; top: 405.69px; width: 511px; height: 206px; overflow: hidden; padding-right: 2px; padding-bottom: 4px; padding-left: 2px; margin-left: -2px; display: none; position: absolute; z-index: 10002;">
有人知道这里发生了什么吗?
【问题讨论】:
-
它在调用控制器?我认为
ServerFiltering(false)不会允许这种情况发生。您使用的是什么 JQuery 版本,如果不是正确的建议 JQuery 版本,我会遇到类似的问题 -
我们使用的是 1.7.1(有点落后,但网站上的其他内容需要该版本)。我相信将 ServerFiltering 设置为 false 只会阻止调用服务器以获取新的过滤结果。我会尝试更新版本的 jquery 看看它是否有效果。感谢您的想法!
-
更改 JQuery 版本并没有解决问题,但它确实让我想到了这里发生的事情。该控件位于 JQuery UI 对话框中。事实证明,它们会导致在浏览器中创建对话框时呈现内容。这意味着位于 JQuery UI 对话框中的 Kendo 自动完成控件在页面加载时呈现,然后在创建对话框时再次呈现。因此,HTML 中出现了两个建议列表。我删除了 JQuery 对话框并将 Kendo 自动完成控件移动到 Kendo 模态窗口,问题就解决了。
标签: asp.net-mvc kendo-ui kendo-asp.net-mvc kendo-autocomplete