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" (このテキストはテキストボックス内にあります)、ページ上のボタンがクリックされると、エラーメッセージが表示されます。ジョンがいるテキストボックスの横にある「名前を入力してください」。

必須フィールドにテキストが含まれていますが、エラー メッセージが表示される理由がわかりません。テキストボックスのテキストをページに入力するのではなく、コードビハインドで設定することで問題になる可能性はありますか?

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 に答える