Telerik MVC ScriptRegistrar, дублирующий javascript

#c# #javascript #telerik #telerik-mvc

#c# #javascript #telerik #telerik-mvc

Вопрос:

Я пытаюсь зарегистрировать некоторый javascript на мой взгляд, и, похоже, у меня возникла проблема. На моей главной странице внизу у меня есть:

 @(
    Html.Telerik().ScriptRegistrar()
        .OnDocumentReady(@<text>
            // Open the hidden window when the feedback-link is clicked
            $('#feedback-link').click(function(e) {
                e.preventDefault();
                $('#FeedbackWindow').data('tWindow').center().open();
            });
        </text>)
)
  

На мой взгляд, мне нужен какой-то определенный для просмотра javascript, поэтому у меня есть:

 @(Html.Telerik().ScriptRegistrar().OnDocumentReady(
    @<text>
        // Upon contact selection change, update the contact sidebar summary
        $('#contactlist').change(function() {
            alert('Selected id'   $(this).val());
        });
    </text>)
)
  

К сожалению, это приводит к тому, что javascript моего представления не объявляется как в представлении MVC, так и на моей главной странице при рендеринге финальной страницы. Как я могу заставить это зарегистрировать скрипт только один раз?

Комментарии:

1. telerik.com/community/forums/aspnet-mvc/general/…

Ответ №1:

Как я сказал в своем ответе на форуме, ScriptRegistrar выводится дважды, потому что так было сказано. @() Выражение Razor выведет свое содержимое, тогда как @{ } оно будет выполнено. В вашем случае вам нужно использовать @{ } для конкретного скрипта:

 @{ Html.Telerik().ScriptRegistrar().OnDocumentReady(
    @<text>
        // Upon contact selection change, update the contact sidebar summary
        $('#contactlist').change(function() {
            alert('Selected id'   $(this).val());
        });
    </text>);
}
  

Также обратите внимание, что для @{ } блока требуется точка с запятой.

Комментарии:

1. Оооо, это имеет смысл, я читал сообщения об этом, и я продолжал читать это, как @{ } и должно быть, поверх основных страниц. Думаю, я получал это в обратном порядке :). Я попробую это сделать, когда вернусь домой.