c# - Telerik MVC ScriptRegistrar 复制 javascript

标签 c# javascript telerik telerik-mvc

我正在尝试在我的 View 中注册一些 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>)
)

在我看来,我想要一些特定于 View 的 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 View 和呈现最终页面时在我的母版页中声明。我怎样才能让它只注册一次脚本?

最佳答案

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

另请注意,@{ } block 需要一个分号。

关于c# - Telerik MVC ScriptRegistrar 复制 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5864506/

相关文章:

c# - Visual Studio 中的 Microsoft Azure 机器学习工作室?

c# - 如何在 OrientDB .Net API 中执行 Massiveinsert?

c# - RadGrid 在细节表扩展时刷新

c# - Telerik RadComboBox 应用 SelectionBoxTemplate OnLoad?

html - Angular Kendo - 在 CSS 或 SCSS 中设置网格列宽

c# - 无法从其他计算机访问 Azure 云上的虚拟机上配置的 Sonarqube 服务器?

c# - 寻找一种更好的方法来排序我的 List<T>

javascript - 如果兼容 IE8 则弹出

javascript - CKEditor 在旧版 Internet Explorer 中不显示

javascript - 使用 Titanium 的 Android 上的大图像