Telerik ScriptRegistrar и загрузка скриптов jquery в голове

Я использую jquery.curvycorners и шрифт на веб-сайте, и я хочу, чтобы эти скрипты загружались в заголовок страницы (чтобы страница отображалась правильно с самого начала).

Теперь я представляю некоторые компоненты Telerik, и ScriptRegistrar вызывает у меня головную боль.

Кажется, он не хочет отображать в двух местах, даже если это две отдельные группы.

Сокращенный пример:

    <% Html.Telerik().ScriptRegistrar().Scripts(s => s
           .AddGroup("Group1", group => group

               // jQuery    
               .Add("jquery-1.4.4.min.js")
               .Add("jquery-ui-1.8.9.custom.min.js")

               // Rounded corners
               .Add("jquery.curvycorners.source.js")

               .Combined(false)
               .Compress(false)
           ))
           .Render();
    %>

</head>
<body id="body">

    <div>

yadda yadda...

    </div>

    <% Html.Telerik().ScriptRegistrar()
            .DefaultGroup(group => group
                .Compress(false)
                .Combined(false))
            .jQuery(false)
            .Render(); %>
</body>
</html>

Должен ли я вручную выбирать те компоненты, которые мне действительно нужны, для загрузки с самого начала и использовать теги script, или есть ли способ использовать рендеринг scriptregistrar в двух местах?


person Carl R    schedule 11.03.2011    source источник


Ответы (2)


Вы не должны загружать ScriptRegistrar в двух местах. Также регистратор скриптов всегда должен быть внизу страницы. Если вам абсолютно необходимо иметь ссылки на javascript перед ScriptRegistrar, вы можете сделать следующее:

<!DOCTYPE html>
<html>
<head>
    <title>@ViewBag.Title</title>
    <link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />
    <script src="@Url.Content("~/Scripts/jquery-1.4.4.min.js")" type="text/javascript"></script>
    @Html.Telerik().StyleSheetRegistrar().DefaultGroup(g => g.Add("telerik.common.css").Add("telerik.windows7.css"))
</head>

<body>
    <div class="page">
        ...
    </div>
    @Html.Telerik().ScriptRegistrar().jQuery(false);
</body>
</html>

В противном случае я рекомендую объединить два внизу, отключить встроенный jQuery и добавить свой собственный в группу, как вы сделали выше.

person carlbergenhem    schedule 11.03.2011
comment
Вот чего я боялся... Мне очень нужны эти скрипты вверху страницы. И было бы неплохо их объединить и сжать. - person Carl R; 11.03.2011
comment
По какой-то причине я не всегда получаю скрипты в нижней части страницы, используя ScriptRegistrar(), и тогда мое древовидное представление не работает... :( Интересно, что может быть причиной этого... Пока я связываю telerik JS в голове тоже. :( Я использую кэширование вывода для некоторых действий моего контроллера, которые создают древовидные представления, возможно, это все. :( - person user2173353; 20.12.2013

Вы можете вызывать Render() только один раз на странице. Попробуйте удалить первый.

person Luke    schedule 25.05.2011
comment
Именно так, но жаль, потому что ожидание с загрузкой некоторых скриптов создает впечатление, что страница загружается медленнее. - person Carl R; 26.05.2011