我正在使用stringbuilder对象将一些javascript连接在一起,然后注册它。我的问题是,是否有一种方法使用客户端Javascript来清除该回发发生时的javascript。我发现使用scriptmanager注册数组时你必须清空任何动态数组,基本上我想用我动态添加到页面的javascript代码做同样的事情? javascript有一个键(“随机列表”),所以我们必须能够引用它!
ScriptManager.RegisterStartupScript(UpdatePanel_MyPublications, typeof(UpdatePanel), "randomlists", sb_javascript.ToString(), true);
让我再解释一下。我正在注册的javascript包含一些变量,在这种情况下是一些动态填充的其他数组。目前的错误是这些数组被附加到而不是重新实例化并重新填充(很多'重复'),如果我可以简单地清除并重新注册代码,那么所有问题都会神奇地停止......
感谢。
答案 0 :(得分:0)
在回发后使用相同的名称重新注册脚本,但不同的内容(即不同的字符串构建器)应该工作。
在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");
}
}
如果这不起作用,请发布您的代码,以便我们查看您的具体方案。