【问题标题】:Kendo UI window will not open a view that has a layoutKendo UI 窗口不会打开具有布局的视图
【发布时间】:2015-02-22 21:32:05
【问题描述】:

我正在为 MVC 使用 KendoUI,试图打开一个加载其内容的 Kendo-UI-Window,如下所示:

.LoadContentFrom("Edit", "CustomerContact")
.Events(events => events.Open("centerWindow"))

当 Edit.cshtml 视图使用我的 _DialogLayout.cshtml 时,它不会加载。当 Edit.cshtml 视图的 Layout = null 时,窗口加载得很好。

单击打开对话框时出现的 JavaScript 错误是: 未捕获的类型错误:无法读取未定义的属性“打开”

这是我的 javascript: .Events(events => events.Open("centerWindow"))

<script>
    $(document).ready(function () {
        $("#btnNewContact")
            .bind("click", function () {
                $("#windowContact").data("kendoWindow").open();
            });
    });

    function centerWindow(e) {
        e.sender.center();
    }
</script>

为什么当 Edit.cshtml 使用 _DialogLayout.cshtml 视图时会发生错误,该视图是 _Layout.cshtml 的精简版。当我创建一个没有布局的视图时,它工作得很好。

【问题讨论】:

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


    【解决方案1】:

    检查 _DialogLayout.cshtml 是否第二次包含 jQuery(通常在底部)。如果是这样,您需要将其删除。它替换了当前的 jQuery 版本,因此,您使用 .data("kendoWindow") 访问的数据缓存为空。

    【讨论】:

    • 嗯,这行得通,但对我来说没有意义,你能解释一下吗?我有 2 个布局 _Layout.cshtml 和 _DialogLayout.cshtml。如果 _Layout 根本不涉及它是如何干扰的?是不是因为父页面已加载,所以从技术上讲,来自 _Layout.cshtml 的父页面中的脚本已经存在?如果是这种情况,我想我应该从 _DialogLayout.cshtml 中删除所有脚本/样式。
    • 对我来说听起来你在编辑页面本身包含了 jQuery 和其他库,但我不知道你的模板是什么样的;那么如果你使用 DialogLayout,jQuery 将会出现两次;如果 Layout = null; ,我认为不会包含 Layout.cshtml;你只需要让 jQuery 只存在一次,并且在剑道库之前;它是否包含在布局中或其他地方都无关紧要
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-14
    • 2013-01-31
    • 1970-01-01
    相关资源
    最近更新 更多