2012-03-30 55 views
0

任何线索为什么按钮单击事件不能成功插入脚本?从updatepanel事件中调用时,Javascript插入不会显示

这是非常简单的代码。

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” 和 “testSCRIPT”,但是当我按下按钮什么都没有发生(应该是第三个警报)......检查调试器,事件被调用并运行,但是当我查看页面源时没有插入任何东西。

我怀疑这个问题可能存在于其他地方,因为复制粘贴到没有母版页(即没有ASP:内容标签)的新页面中。尽管如此,我还没有遇到其他脚本插入的问题,为什么这个呢?

回答

0

我发现了什么是错的^^

有剧本我被插入,这使得它打破内流浪分号:/

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

这样一个愚蠢的错误造成这么多的无奈。 .. 对不起大家!

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); 
+0

我有另一个页面,这可以在更新面板内正常工作试过这段代码,它说'RegisterStartupScript'不能从实例中调用,我认为它是一个静态方法。使用'ScriptManager'而不是'ClientScript'也不能解决问题。 – Oofpez 2012-04-02 09:54:05

0

你应该尝试这样的事情

字符串脚本= “警报( '东西');”;

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

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

+0

使用OnClientClick在这种情况下没有用,因为我想在后面的代码中运行内容,然后执行javascript。尽管它确实以这种方式调用函数,但JavaScript会在我需要之前运行。 – Oofpez 2012-04-02 07:52:23

相关问题