ASP.NET UserControl获取内联代码中的属性

时间:2016-03-01 13:35:37

标签: asp.net

我有一个用户控件,在控件的页面加载中我这样做:

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。我有什么遗漏来更新我的价值吗?

1 个答案:

答案 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);  
    }