gpt4 book ai didi

c# - RegisterStartUpScript - 发生回发时清除代码

转载 作者:行者123 更新时间:2023-11-28 10:15:14 25 4
gpt4 key购买 nike

我正在使用 stringbuilder 对象将一些 javascript 连接在一起,然后注册它。我的问题是,有没有办法使用客户端 Javascript 在发生回发时清除该 javascript。我发现,当使用 scriptmanager 注册数组时,您必须清空所有动态数组,基本上我想对动态添加到页面的 javascript 代码做同样的事情? javascript 有一个键(“randomlists”),因此我们必须能够引用它!

ScriptManager.RegisterStartupScript(UpdatePanel_MyPublications, typeof(UpdatePanel), "randomlists", sb_javascript.ToString(), true);

让我再解释一下。我正在注册的 JavaScript 包含一些变量,在本例中是动态填充的一些其他数组。目前的错误是这些数组是附加的,而不是重新实例化和重新填充(很多“正在”发生),如果我可以简单地清除并重新注册代码,所有问题都会神奇地停止......

谢谢。

最佳答案

在回发时使用相同名称但不同内容(即不同的字符串生成器)重新注册脚本应该可以工作。

在 aspx 页面上,添加一个名为“Button1”的按钮,并使用以下 aspx.cs 作为概念证明。页面加载后单击该按钮会发出“1”警报,然后发回。再次单击该按钮,您将收到警报“2”,表明在回发时,我能够重新定义变量。

aspx.cs页面:

protected void Page_Load(object sender, EventArgs e)
{
Button1.Attributes.Add("onclick", "alert(test);");
var sb_javascript = new StringBuilder();
var sb_javascriptPostback = new StringBuilder();
sb_javascript.Append("var test='1';");
sb_javascriptPostback.Append("var test='2';");
if ((Page.IsPostBack))
{
ScriptManager.RegisterStartupScript(UpdatePanel_MyPublications, typeof(UpdatePanel), "randomlists", sb_javascriptPostback.ToString(),
true);
}
else
{
ScriptManager.RegisterStartupScript(UpdatePanel_MyPublications, typeof (UpdatePanel), "randomlists",
sb_javascript.ToString(),
true);
}

}

protected void Button1_Click(object sender, EventArgs e)
{
Response.Write("PostBack");
}
}

如果这不起作用,请发布您的代码,以便我们查看您的具体场景。

关于c# - RegisterStartUpScript - 发生回发时清除代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6701579/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com