Telerik MVC ScriptRegistrar, дублирующий JavaScript - PullRequest
3 голосов
/ 03 мая 2011

Я пытаюсь зарегистрировать некоторый 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 Ответ

4 голосов
/ 03 мая 2011

Как я уже сказал в моем ответе на форуме , 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>);
}

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

...