我试图在我的视图中注册一些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视图中声明,也在我的母版页面中呈现最终页面时。我怎么能只让这个脚本注册一次?
答案 0 :(得分:4)
正如我在forum reply中所说的那样,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>);
}
另请注意,@{ }
块需要使用分号。