2013-03-09 23 views
7

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

回答

11

在2013年第1季度发布中,他们添加了对延期脚本的支持。你可以这样使用它:

@(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

+0

这是一个真正惊人的剑道UI +1兄弟! – 2015-07-31 02:32:32

2

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

它在documentation中被提及。

编辑:这是后来可能的延期脚本rendereding jrummell exiplained。

2

这会让人头疼,但由于包装器生成的jQuery脚本不能在部分视图中生成包装器,请抓取生成的脚本并将其注入到页面底部的脚本标记中?当然,这意味着要么重复代码,要么有相当多的代码以可重用的方式生成解决方法,所有脚本最终都会在页面底部而不是中间部分。

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

+0

是的,帮助表现。好主意。取决于输出可能会得到waaaaaayyy凌乱,但好主意。 +1 – 2013-03-19 19:52:30