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

时间:2013-03-09 14:14:06

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

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

3 个答案:

答案 0 :(得分:12)

在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了解更多信息。

答案 1 :(得分:2)

对不起,这是不可能的,不能以工作为基础。用于MVC的Kendo Wrappers的脚本总是在小部件的html包装器之后呈现。

documentation中提及。

编辑:稍后可以使用延迟脚本重新渲染jrummell exiplained。

答案 2 :(得分:2)

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

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