【问题标题】:Web user control's private value is empty after UpdatePanel updatesUpdatePanel 更新后 Web 用户控件的私有值为空
【发布时间】:2011-04-07 11:23:20
【问题描述】:
  1. 我有一个 Web 用户控件,其中有一个更新面板和一个网格视图,其中包含一个网格视图
  2. 在页面加载时,我通过公开的属性设置用户控件的私有字段值并将网格视图与数据绑定
  3. 我通过模式输入一些新值并在用户控件的更新面板中执行回发,当我尝试获取用户控件上私有字段的值时,该值默认为零
 private int ftId = 0;

public int  FtId
{
    set { ftId = value; }
}

私有int ftId=0; 在每次异步回发后被调用。 有什么办法可以克服这个问题吗?

【问题讨论】:

    标签: asp.net gridview updatepanel webusercontrol


    【解决方案1】:

    您不能将值存储在变量中并使其在回发中保持不变。但是将其存储在视图状态中会起作用:

    public int  FtId
    {
        get { return  (int)(ViewState["FtId"] ?? 0); }
        set { ViewState["FtId"] = value; }
    }
    

    HTH。

    【讨论】:

    • 它说 ??尽管我同意您的视图状态逻辑,但不能应用于“int”“int”。
    • 另外,如果我在用户控件中访问 FtId,它会说它在当前上下文中不存在。
    • ??适用于可为空的类型,所以是的,它不能直接应用于 int,但 ViewState["FtId"] 是一个对象。我这样做是因为可能尚未为用户加载视图状态......它应该让你做吧,我在其他地方也有这种语法......另外,你是如何访问它的?它应该像财产一样工作。您的意思是“在同一用户控件内”还是来自另一个用户控件?
    • 谢谢布赖恩,我通过使用 get { return (int?)ViewState["ftId"] ?? 0;我现在可以从所有方法访问该属性。谢谢你。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-04
    • 1970-01-01
    • 1970-01-01
    • 2018-04-26
    • 1970-01-01
    • 2011-01-10
    相关资源
    最近更新 更多