文本框上的验证错误,文件设置在文件后面的代码中

时间:2012-09-06 22:53:10

标签: asp.net validation webforms datatable

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

前端代码是:

<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”(此文本在文本框内),当单击页面上的按钮时,错误消息显示例如文本框旁边的“请输入名称”,其中包含John。

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

2 个答案:

答案 0 :(得分:1)

发现问题是从数据库返回的数据中有多余的空格,所以我使用修复它的Trim()方法。

感谢那些回复的人。

干杯

答案 1 :(得分:0)

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

e.g。

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

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

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