【问题标题】:Telerik MVC ScriptRegistrar duplicating javascriptTelerik MVC ScriptRegistrar 复制 javascript
【发布时间】:2011-05-03 02:35:58
【问题描述】:

我正在尝试在我看来注册一些 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 视图和我的母版页中都被声明。我怎样才能让它只注册一次脚本?

【问题讨论】:

标签: c# javascript telerik telerik-mvc


【解决方案1】:

正如我在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>);
}

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

【讨论】:

  • 哦,有道理,我正在阅读上面的帖子,我一直在阅读它,因为@{ } 应该在母版页上。猜猜我倒退了:)。我回家后会试一试。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多