从updatepanel事件调用时,插入的Javascript不会显示

时间:2012-03-30 13:40:42

标签: c# javascript asp.net updatepanel

按钮点击事件为什么不能成功插入脚本的任何线索?

这是非常简单的代码。

C#:

public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e){
        ClientScript.RegisterStartupScript(Page.GetType(), "scriptalert", "<script type=\"text/javascript\">alert('testLOAD');</script>;", false);
        btnAdd.Click += new EventHandler(btnAdd_Clicked);
}

protected void btnAdd_Clicked(Object sender,System.EventArgs e){
    ClientScript.RegisterStartupScript(Page.GetType(), "scriptfunc", "<script type=\"text/javascript\">func();</script>;", false);
}

}

HTML:

<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
<script type="text/javascript">
alert("testSCRIPT");

function func() {
    alert("testFUNC");
}
</script>
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
    <asp:ScriptManager ID="ToolkitScriptManager1" runat="server" />
    <div id="View" style="height: 50%; width:20%; ">
        blahblahblah
    </div>
    <div id="Addd" style="height: 50%; width:100%;">
        <asp:UpdatePanel ID="UpdateAdd" runat="server">
            <ContentTemplate>
                <asp:Button ID="btnAdd" runat="server" Text="Add" />
            </ContentTemplate>
        </asp:UpdatePanel>
    </div>
</asp:Content>

在页面加载时,我会触发两个警报,即&#34; testLOAD&#34;和&#34; testSCRIPT&#34;,但当我按下按钮时没有任何反应(应该有第三个警报)...在调试器中检查,事件被调用并运行,但是当我查看页面源时什么也没有插入

我怀疑问题可能在其他地方,因为将其复制粘贴到没有母版页(即没有ASP:内容标记)的新页面中。我对其他脚本插入没有任何问题,为什么会这样呢?

3 个答案:

答案 0 :(得分:1)

问题出在更新面板内的按钮上。为了解决这个问题,我认为您可以使用ScriptManager而不是ClientScript.RegisterStartupScript方法。像下面这样的东西应该这样做;

ToolkitScriptManager1.RegisterStartupScript(this, typeof(Page), UniqueID, "<script type=\"text/javascript\">func();</script>;", true);

而不是

ClientScript.RegisterStartupScript(Page.GetType(), "scriptfunc", "<script type=\"text/javascript\">func();</script>;", false);

答案 1 :(得分:0)

你应该尝试这样的事情

string script =“alert('something');”;

this.ClientScript.registerclientscriptblock(this.GetType(),“scriptfunc”,script,true);

或将您的函数放在page_load事件中,并在Button.OnClientClick属性中调用该函数。

答案 2 :(得分:0)

我发现了什么问题^。^

我插入的脚本中有一个迷路分号,这使得它破了:/

ClientScript.RegisterStartupScript(Page.GetType(), "scriptfunc", "<script type=\"text/javascript\">func();</script>;", false);

这种愚蠢的错误引起了很多挫折......对不起,伙计们!