代码之家  ›  专栏  ›  技术社区  ›  Brian Mains

MVC中控制剑道脚本的位置绘制

  •  7
  • Brian Mains  · 技术社区  · 13 年前

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

    3 回复  |  直到 13 年前
        1
  •  12
  •   jrummell    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 了解更多信息。

        2
  •  2
  •   Elsimer    13 年前

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

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

        3
  •  2
  •   Petur Subev    11 年前

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

    documentation .

    编辑:这是以后可能的,因为延迟的脚本渲染了jrummell所说的。