[英]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.