#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:
Как я сказал в своем ответе на форуме, 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. Оооо, это имеет смысл, я читал сообщения об этом, и я продолжал читать это, как
@{ }
и должно быть, поверх основных страниц. Думаю, я получал это в обратном порядке :). Я попробую это сделать, когда вернусь домой.