【问题标题】:How can I connect up my UserControl properties in such a way that they retain state on postback?如何连接我的 UserControl 属性,使其在回发时保持状态?
【发布时间】:2013-03-13 18:27:31
【问题描述】:

在 ASP.NET Webforms 应用程序中,我有一个包含 UserControl 的提交表单,其属性如下:

    public string Name
    {
        get
        {
            String s = (String)ViewState["Name"];
            return ((s == null) ? String.Empty : s);
        }

        set
        {
            ViewState["Name"] = value;
        }
    }

这是改编自 MSDN 演练。这被假定为“绑定”(不是数据绑定,因为我认为这是不可能的)到 ascx 中定义的文本框的内容,如下所示:

  <asp:TextBox runat="server" ID="name" />

问题是,允许将其作为公共属性访问并在回发时保留状态的最佳做法是什么?

【问题讨论】:

  • 默认情况下,除非您有意关闭视图状态,否则 TextBox 控件会保留数据。我错过了什么吗?
  • 好的,那么我应该如何在 UserControl 中执行此操作
  • 我认为你错过了这个用户控件由许多文本框组成,每个文本框都需要将其文本内容作为用户控件上的属性公开。
  • 简单地暴露每个TextBox 控件的Text 属性有什么问题吗? public string Name { get { return name.Text; } set { name.Text = value; } }
  • 似乎工作 Richard,想写一个答案吗?

标签: c# asp.net webforms web-controls


【解决方案1】:

最简单的选择是将UserControl 上的公共属性委托给子控件的属性:

public string Name
{
   get { return name.Text; }
   set { name.Text = value; }
}

TextBox 将负责在回发时维护状态。

【讨论】:

  • 保持回发状态的文本框是缺少的元素,谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多