插入的Javascript没有'从updatepanel事件调用时不会显示

Javascript inserted doesn't show up when called from updatepanel event

本文关键字:调用 事件 显示 updatepanel Javascript 没有 插入      更新时间:2023-09-26

按钮点击事件没有成功插入脚本的原因有什么线索吗?

下面是非常简单的代码。

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>

在页面加载时,我会收到两个警报,即"testLOAD"answers"testSCRIPT",但当我按下按钮时,什么都没有发生(应该有第三个警报)。。。已签入调试器,事件被调用并运行,但当我查看页面源时,没有插入任何内容。

我怀疑问题可能出在其他地方,因为复制粘贴到没有母版页(即没有ASP:Content标签)的新页面中是可行的。不过,我在其他脚本插入方面没有遇到任何问题,那么为什么是这次呢?

问题产生于更新面板中的按钮。为了克服这个问题,我认为可以使用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);

您应该尝试类似的东西

string script="alert('something');";

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

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

我发现了问题^.^

在我插入的脚本中有一个错误的分号,导致它中断:/

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

这样一个愚蠢的错误引起了如此多的沮丧。。。对不起,伙计们!