【问题标题】:TextBox.Text property is not assigned in UserControlTextBox.Text 属性未在 UserControl 中分配
【发布时间】:2011-09-21 07:09:28
【问题描述】:

我的 UserControl 代码如下,我在 UserControl 中有一个 TextBox,想从网页访问 TextBox.Text 属性。

UcUserForm 用户控件被插入到 myform.aspx 网页中。

在 myform.aspx PageLoad 上,我像这样为 textBox 设置值

ucUserForm.TbFirstName.Text = "Tomas";

一切正常。加载网页时,我在文本框中看到名称。然后我将值从 Tomas 更改为 Jonas。

在 myform.aspx ButtonClick 上我正在尝试读取值

var mynewname = ucUserForm.TbFirstName.Text; 

尽管在网页上的 TextBox 中名称从 Tomas 更改为 Jonas,但我仍然使用旧名称 Tomas。不明白问题出在哪里。

UserControl 后面的代码

  public partial class UcUserForm: System.Web.UI.UserControl
    {


        public TextBox TbFirstName
        {
            get { return tbFirstName; }

        }

}

用户控制网页

  <asp:TextBox  ID="tbFirstName" autocomplete="off"  MaxLength="25" runat="server"></asp:TextBox>

default.aspx中的注册用户控制代码

<%@ Register Src="ucUserForm.ascx" TagName="ucUserForm" TagPrefix="uc1" %>
<uc1:ucUserForm ID="ucUserForm" runat="server" />

【问题讨论】:

  • 移除“set”访问器:这是有害的
  • 已删除。但问题依然存在。
  • 您能展示一下如何将用户控件添加到页面吗?视图状态是否启用?*
  • @SteveB 我添加了用户控制注册码。 Viewstate 设置为默认 - 启用。

标签: asp.net user-controls textbox


【解决方案1】:

试试这个:

protected void Page_Load(object sender, EventArgs e)
    {
        if (!this.IsPostBack)
        {
           ucUserForm.TbFirstName.Text = "Tomas";
        }
     }

【讨论】:

    【解决方案2】:

    您在每次加载页面时设置它。在 Init 阶段尝试。

    类似

     protected void Page_Init(object sender, EventArgs e)
        {
                ucUserForm.TbFirstName.Text = "Tomas";
        }
    

    Init 在页面的生命周期中只发生一次

    http://msdn.microsoft.com/en-us/library/ms178472.aspx

    【讨论】:

      猜你喜欢
      • 2014-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-25
      • 1970-01-01
      • 1970-01-01
      • 2012-07-20
      • 1970-01-01
      相关资源
      最近更新 更多