假设我有一个按钮可以修改更新面板中的一些内容:
protected void Button1_Click(object sender, EventArgs e)
{
Label1.Text = "New Text";
}
在 UpdatePanel 更新后,我还想在客户端执行一些代码。我的第一个想法是执行ScriptManager.RegisterClientScriptBlock
或RegisterStartupScript
:
protected void Button1_Click(object sender, EventArgs e)
{
Label1.Text = "New Text";
var x = getSomeDatabaseQueryResultBasedOn(TextBox1.Text, ...);
ScriptManager.RegisterStartupScript(this, typeof(WebForm1), "SomeKey",
"/* this is my script, using `x` */", true)
}
但是,RegisterStartupScript 的文档说:
您可以使用此方法注册一个启动脚本块,每次发生异步回发时都会包含该脚本块。
我不希望这段代码执行“每次发生异步回发”。我希望它现在才执行(在浏览器重新控制之后)。如果单击 Button2,我不希望执行任何脚本,如果再次单击 Button1,x
可能会有所不同,我希望执行一个新脚本。不幸的是,我没有找到ScriptManager.ExecuteOnce
方法。
有没有这样的方法?还是我只是误解了 的文档RegisterStartupScript
?