在 MVC 中控制 Kendo 脚本位置渲染

Posted

技术标签:

【中文标题】在 MVC 中控制 Kendo 脚本位置渲染【英文标题】:Control Kendo Script Position Rendering in MVC 【发布时间】:2013-03-09 14:14:05 【问题描述】:

我正在使用 Kendo ASP.NET MVC 包装器。我注意到包装器正在渲染脚本以在控件标记之后立即初始化控件。有没有办法配置让脚本在底部呈现?以前,使用 Telerik ASP.NET MVC 控件,您可以让脚本管理器在底部呈现所有初始化。这可能吗?

【问题讨论】:

【参考方案1】:

在 2013 年第一季度的版本中,他们增加了对延迟脚本的支持。你可以这样使用它:

@(html.Kendo().AutoCompleteFor(m => m)
    .Filter(FilterType.Contains)
    .MinLength(2)
    .DataSource(config =>
        
            config.Read(action, controller, routeValues);
            config.ServerFiltering(true);
        ).Deferred())

注意链末尾的Deferred() 方法。然后,在您的布局中,在标记中的任意位置添加以下内容:

  <!-- ... -->
  @Html.Kendo().DeferredScripts()
  </body>
</html>

看 http://www.kendoui.com/forums/mvc/general-discussions/kendo-initialization-scripts-in-body-interfere-with-other-libraries.aspx 了解更多信息。

【讨论】:

这是剑道 UI +1 兄弟的一个真正了不起的补充!【参考方案2】:

这会有点让人头疼,但是由于包装器生成 jQuery 脚本,你不能在局部视图中生成包装器,获取生成的脚本并将其注入页面底部的脚本标记中吗?当然,这意味着要使用重复的代码或大量代码以可重用的方式生成解决方法,所有这些都使得脚本最终位于页面底部而不是中间。

我假设这是为了提高性能(最佳做法通常是将 CSS 放在顶部,将脚本放在底部)?

【讨论】:

是的,有助于提高性能。好主意。根据输出,可能会变得混乱,但这是个好主意。 +1【参考方案3】:

很抱歉,这是不可能的,也无法解决。 MVC 的 Kendo Wrappers 的脚本始终在小部件的 html 包装之后呈现。

documentation中有提到。

编辑:这在稍后可能会使用延迟脚本呈现 jrummell exiplained。

【讨论】:

以上是关于在 MVC 中控制 Kendo 脚本位置渲染的主要内容,如果未能解决你的问题,请参考以下文章

MVC 4 - 脚本/Css 渲染问题

使用 Knockout、MVC 和 Kendo 时,在控制器“Web.Controllers.HomeController”上找不到公共操作方法“未定义”

控制 magento 左侧导航的渲染位置

将 Kendo Grid 数据发布到 MVC 中的控制器

Web API 在 MVC 中存储承载令牌的位置

使用 MVC 5 向 Kendo UI 控制器添加父级和子级