0

asp:RegularExpressionValidatorコントロールを使用して、いくつかのテキストボックスを検証したいと思います。一部のテキストボックスにはメールアドレスが含まれています。異なるテキストボックスごとに、RegularExpressionValidatorの属性で同じ正規表現を繰り返したくありません。したがって、コードビハインドで式を定数として定義します

Const regEmail As String = "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$"

同様に、私はこのようにエラーメッセージを定義します。

const regEmailMsg = "Email address does not appear to be valid."

ただし、動作するASPXページのRegularExpressionValidatorコントロールにこれらの文字列を含める方法が見つかりません。有効な式には無効のフラグが付けられます。追加の失敗として、ValidatorCalloutExtenderが表示されますが、その中央のセクションがありません。エラーメッセージは表示されません。テキストボックスとバリデーターの例を次に示します。

<asp:TextBox ID="txtIndividualEmail" runat="server" Width = "200"></asp:TextBox>

<asp:RegularExpressionValidator ID="revIndividualEmail" runat="server" ErrorMessage="<% =regEmailMsg %>" Display="None" 
ControlToValidate="txtIndividualEmail" ValidationExpression="<% =regEmail %>" >    </asp:RegularExpressionValidator>

<cc1:ValidatorCalloutExtender ID="vceIndividualEmail" runat="server" 
Enabled="True" TargetControlID="revIndividualEmail" HighlightCssClass="validatorCalloutHighlight">
</cc1:ValidatorCalloutExtender>

文字列をASPXに直接含めると、すべてが正常に機能します。

<asp:RegularExpressionValidator ID="revIndividualEmail" runat="server" ErrorMessage="Email address does not appear to be valid." Display="None" 
ControlToValidate="txtIndividualEmail" ValidationExpression="^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$"

電子メールは、検証のために文字列を再利用したい場合の1つの例にすぎないため、ASPXで文字列を繰り返したくありません。これを行う方法はありますか?

4

1 に答える 1

0

ここで実際にできることは、OnInitorOnLoadイベントのコード ビハインドでプロパティを設定することだけです。何かのようなもの:

protected override void OnLoad(EventArgs e)
{
   txtIndividualEmail.ValidationExpression = myExpressionConstant;
   txtIndividualEmail.ErrorMessage = myErrorMessageConstant;
   // etc
}
于 2012-11-16T16:02:12.440 に答える