簡體   English   中英

腳本管理器注冊啟動腳本不將腳本添加到頁面

[英]Script Manager Register Startup Script do not add script to page

這讓我感到困惑。 我有兩個按鈕:

<div class="btn-group" role="group">
    <asp:Button runat="server" ID="RegisterButton" ClientIDMode="Static" OnClick="RegisterButton_Click" Text="register" />
    <asp:Button runat="server" ID="TestButton" ClientIDMode="Static" OnClick="TestButton_Click" Text="testClick" />
</div>

其中調用了兩個不同的功能:

protected void RegisterButton_Click(object sender, EventArgs e)
{
...
Register(user)
}
private void Register (user)
{
...
RegisterResultResultJson(regRes);
}
private void RegisterResultResultJson(RegResult regResult)
{
    string jsonString = Helpers.Serializer.JsonSerializer.ToJSON(regResult);
    string script = ";RegisterResult(" + jsonString + ");";
    ScriptManager.RegisterStartupScript(this.Page, Page.GetType(), "RegisterStartupScript", script, true);
}
protected void TestButton_Click(object sender, EventArgs e)
{
    string script = ";console.log('klik');";
    ScriptManager.RegisterStartupScript(this.Page, Page.GetType(), "RegisterStartupScript", script, true);
}

當我單擊TestButton ,一切都按預期工作,我可以在源和控制台日志“ klik”中看到腳本。 但是,當我單擊RegisterButton沒有任何反應。 當我在代碼中添加斷點,復制script並將其粘貼到控制台時,JS RegisterResult()可以正常工作。

但是當我單擊RegisterButton時沒有任何反應

發生的是,當您執行以下代碼時:

string script = ";RegisterResult(" + jsonString + ");";
ScriptManager.RegisterStartupScript(this.Page, Page.GetType(), "RegisterStartupScript", script, true);

這只是將腳本代碼粘貼到網頁中,而不調用該功能

<script type="text/javascript">
  //<![CDATA[
 ;RegisterResult(yourDatacomesHere);//]]>
</script>

因此,如果您要調用函數,而不是將其粘貼到script標簽中,只需將函數調用為:

ScriptManager.RegisterStartupScript(this.Page, Page.GetType(), "registerButtonClick", "RegisterResult("+jsonString+")", true);

或者,您可以將代碼綁定到IIFE中

string script = "(function(){RegisterResult(" + jsonString + ");})()";
ScriptManager.RegisterStartupScript(this.Page, Page.GetType(), "registerButtonClick", script, true);

注意:如果將來可能的話,請嘗試使用可從客戶端調用的WebMethods (使用Ajax或簡單的javascript),該方法可將成功或失敗函數中的值返回給客戶端。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM