ajax render的奇怪问题。紧急求救
大家好!我今天碰到了一个奇怪的问题。现在简单描述如下(由于是公司的控件,省去大部分代码):
我有一个pagebar控件,render方法为:
protected override void Render(HtmlTextWriter writer)
{
writer.Write("<script language='javascript'>\n");
writer.Write("function " + this.UniqueID + "ChangePage(page)\n");
writer.Write(@"{");
writer.Write("if (page == {0}) return;\n",this.CurrentPage);
writer.Write("if (page > {0} || page < 1 || isNaN(page))", this.PageCount);
writer.Write(@"
{
alert('请输入正确的页码!');
return;
}
");
writer.Write("__doPostBack('" + this.UniqueID + "',page)");
//writer.Write(Page.ClientScript.GetPostBackEventReference(this, "page"));
writer.Write(@"
}
</script>
");
.....此处省略其他输出内容
base.Render(writer);
}
这个控件用在了一个使用了ajax的页面中。所有控件都在一个scriptmanager的updatepanel中,第一次载入,由于pagecount=1,所以里面那个js的内容有一句为:
if (page > 1 || page < 1 || isNaN(page)).这是正确的。
但是我点击了页面的按钮提交了新的查询条件,这时候pagecount变为了3,按理说新页面的js的话应该变为:
if (page > 3 || page < 1 || isNaN(page))。
但是实际上不是这样的,页面上还是if (page > 1 || page < 1 || isNaN(page)).导致输入2,3会提示错误。但是我跟踪源代码发现到base.Render(writer);处write里面的内容确实是if (page > 3 || page < 1 || isNaN(page)),但是为什么最后到了页面上没有变化呢?是因为ajax的原因吗?ajax局部刷新的条件是什么?难道是因为这个js的方法名称和参数都没有变化就没有render吗?请各位指教。