Telerik MVC ScriptRegistrar复制javascript

时间:2011-05-03 02:35:59

标签: 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 个答案:

答案 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>);
}

另请注意,@{ }块需要使用分号。