我有一个用户控件,在控件的页面加载中我这样做:
if (ViewState["Lib"] != null)
{
cfg.Lib = (string)ViewState["Lib"];
}
可以使用如下文本框修改此Lib属性:
protected void Lib_e_Changed(object sender, EventArgs e)
{
cfg.Lib = Lib_e.Text;
ViewState["Lib"] = Lib_e.Text;
}
我在ascx文件中写了以下javascript:
alert('<%= cfg.Lib %>');
即使我更改了文本框中的文本,它也会始终返回默认值。我的文本框位于更新面板中,我将AutoPostBack设置为true。我有什么遗漏来更新我的价值吗?
答案 0 :(得分:1)
这是因为aspx页面呈现
alert('<%= cfg.Lib %>');
在您执行任何指定之前
cfg.Lib
使其可行,您可以做的是..从服务器端注册脚本,如
protected void Lib_e_Changed(object sender, EventArgs e)
{
cfg.Lib = Lib_e.Text;
ViewState["Lib"] = Lib_e.Text;
ScriptManager.RegisterStartupScript(updatePanelId, updatePanelId.GetType(), "AnyKey", "alert('" + cfg.Lib + "')", true);
//ScriptManager.RegisterStartupScript(this, this.GetType(), "AnyKey", "alert('" + cfg.Lib + "')", true);
//Page.ClientScript.RegisterStartupScript(this.GetType(),"AnyKey","alert('"+cfg.Lib +"')",true);
}