【问题标题】:Validation errors on textbox, text set in code behind file文本框上的验证错误,文件后面的代码中设置的文本
【发布时间】:2012-08-31 20:02:12
【问题描述】:

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

前端代码为:

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

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

【问题讨论】:

  • 您使用的是RequiredFieldValidator控件,它仅在要验证的控件为空时进行验证
  • 正确,但是当文本框中有文本时验证失败。
  • 是正确的,这是RequiredFieldValidator 的默认行为,因为文本有值,所以无法验证。
  • 在文本框获取文本的位置发布您的源(事件)
  • 方法太长太post,但我认为这不应该是导致验证出现问题的问题。

标签: asp.net validation webforms datatable


【解决方案1】:

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

感谢回复的人。

干杯

【讨论】:

    【解决方案2】:

    我需要更多信息,但可能是您忘记将文本字段的设置包含在 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 将再次变为空白。

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

    【讨论】:

    • 感谢您的帖子,不幸的是我刚刚尝试过,它给了我相同的结果:(
    猜你喜欢
    • 2018-06-20
    • 2018-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多