添加MasterPage时,ScriptManager.RegisterClientScriptBlock不再工作

时间:2017-06-13 12:12:33

标签: javascript c# asp.net

我从C#调用javascript函数,如下所示:

        ScriptManager.RegisterClientScriptBlock(this, GetType(), "script", "$(function () {initializeMap(); });", true);

在我添加主页面之前,它完美无缺:

MasterPageFile="~/Header.master

<%@ Register Assembly="myassembly" Namespace="mynamesapce" TagPrefix="mytag" %> <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajaxToolkit" %>

将我的代码放在asp内容中:

<asp:Content ID="Content1" ContentPlaceHolderID="Body" runat="Server">

在我添加了所有这些后,javascript函数调用不再有效了,我收到了这个错误:

  

未捕获的ReferenceError:$未定义

当我点击错误时它也让我

$(function () {initializeMap(); }); 你对这个问题有所了解吗?

2 个答案:

答案 0 :(得分:1)

我敢打赌,如果jQuery声明仍然被声明,那么它在HTML中处于不同的位置。

我倾向于使用RegisterStartupScript,但不是防弹,但不太可能导致这些问题,因为脚本将在页面底部呈现。

ScriptManager.RegisterStartupScript(this, GetType(), "script", "$(function () {initializeMap(); });", true);

答案 1 :(得分:1)

function fakeFixed(){
        $fakeFixed = jQuery('.fake-fixed');
        $window = jQuery(window);
        jQuery(window).scroll(function(){
            $fakeFixed.each(function(){
                $this = jQuery(this);
                    $this.css('margin-top', $window.scrollTop() - $this.parent().position().top);
                        console.log();
                });
            });
    } //cLose fakeFixed

    fakeFixed();

仅在 <asp:ScriptManager ID="ScriptManager1" runat="server" AsyncPostBackTimeout="400"></asp:ScriptManager> <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server"> <!-- end of secondary bar --> </asp:ContentPlaceHolder> 中添加ScriptManager并将其从其他所有页面中删除,然后尝试一下..