错误提示:本来要实现从后台向页面添加一段代码,可运行的时候老是提示找不到JS对象。
原因查找:不运行整个程序,只浏览这个独立的页面才发现:原来是在后台的这段代码中所写的一个JS函数没有找到。虽然存放该函数的脚本文件已经引用,但却是在调用这个函数之后。因为后台response.write的代码是在所用页面文件初始化之前生成的。所以,找不到该对象。
解决:在后台生成一个HTML控件,并调整它在页面上的位置。代码如下:
Code
protected void btnPrevious_Click(object sender, EventArgs e)
{
// 保存页面信息
Save();
// 实例化生成控件对象
HtmlGenericControl h = new HtmlGenericControl();
// 定义存放HTML内容的串
string sHtml = "";
// 初始化串
sHtml += "<script language=\"javascript\" type=\"text/javascript\">\n";
sHtml += "<!--\n";
sHtml += " NextPage('NewUserRole','" + strAuthorized + "','" + userId + "','E');\n";
sHtml += "//-->\n";
sHtml += "</script>\n";
// 给对象的InnerHtml属性赋值
h.InnerHtml = sHtml;
// 给页面添加该控件,并设置其位置
Page.Controls.AddAt(4, h);
}
另外:添加该代码的主要是为了实现在点击下一步的时候先执行后台的保存,然后再执行页面的NextPage,并跳转到下一页。如果单纯在页面的按钮上添加一个服务端和客户端的单击事件,将会先执行客户端再执行服务端,这样一来不能实现往下一页跳转的功能。
所以,改变下点击事件的顺序,先执行后台,再执行脚本,就可以在保存页面信息后成功往下一页跳转。