1

我在文本框上执行验证时遇到问题,该文本框在代码隐藏文件中设置了文本,这是根据数据表中的数据设置文本。问题是,当我加载页面并单击一个按钮时,验证会按原样运行,但是已使用文本设置的字段无法通过验证 - 他们不应该这样做。

前端代码为:

<asp:TextBox ID="tbName" runat="server" ></asp:TextBox>
<asp:RequiredFieldValidator ID="tbRequired" EnableClientScript="true" 
        Display="Dynamic" runat="server" ControlToValidate="tbName" ErrorMessage="Please enter a name"></asp:RequiredFieldValidator>

后端代码为:

 tbName.Text = dtDetails.Rows[0]["Name"].ToString();

任何建议将不胜感激。

干杯

例如,当页面加载时设置了文本框(来自代码后面,因此不是用户输入),例如“John”(此文本在文本框内),当单击页面上的按钮时,将显示错误消息 Eg “请输入姓名”旁边的文本框,其中包含约翰。

必填字段中有文本,我不确定它为什么显示错误消息。设置带有代码的文本框文本而不是在页面上输入它会是一个问题吗?

4

2 回答 2

1

发现问题在于从数据库返回的数据中有额外的空格,所以我使用了修复它的 Trim() 方法。

感谢那些回答的人。

干杯

于 2012-09-07T02:18:12.233 回答
0

我需要更多信息,但可能是您忘记将文本字段的设置包含在 Page_Load() 的 if(!Page.IsPostBack) 中吗?

例如

if(!Page.IsPostBack)
{
    tbName.Text = dtDetails.Rows[0]["Name"].ToString();
}

Page_Load() 在每个页面加载时运行,包括 PostBacks。如果您没有使用上述 if 语句将设置代码包装在 Page_Load() 中,则在调用 OnClick 事件之前,文本框将被 DataTable 中的值覆盖。如果 DataTable 中的值是空白的(或者如果 DataTable 没有重新初始化),那么 TextBox 将再次变为空白。

正如我所说,这有点猜测,因为没有太多关于数据或代码隐藏代码的信息。

于 2012-09-06T23:39:11.213 回答