asp.net webforms プロジェクトに取り組んでいます。IsRequired という名前のブール値のパブリック プロパティを持つユーザー コントロールがあり、true または false に設定できます。ユーザーが社会保障番号 (SSN) を入力するテキスト ボックスがあります。IsRequired = true の場合、ユーザーは SSN 値を入力する必要があります。それ以外の場合、検証は失敗し、テキスト ボックスの横に「SSN が必要です」というメッセージが表示されます。IsRequired = false の場合、ユーザーが SSN 値を入力しないと、メッセージ ボックスに「SSN がある場合は入力してください」というメッセージが表示されます。基本的に、このメッセージは訴え者に SSN を入力するよう促します。メッセージボックスで [OK] をクリックすると、値を入力できます。それ以外の場合はページを送信でき、検証は失敗しません。
私は DevExpress コントロールを使用しており、次の解決策を思いつきました。
ascx ページ:
<dx:ASPxTextBox ID="SsnTextBox" runat="server" OnValidation="SocialSecurity_Validation">
<MaskSettings Mask="999999999"></MaskSettings>
</dx:ASPxTextBox>
コードビハインドで:
if (IsSubscriber && (e.Value == null || (string)e.Value == ""))
{
SsnTextBox.ErrorText = "Required";
e.IsValid = false;
}
else if (!IsSubscriber && (e.Value == null || (string)e.Value == ""))
{
e.IsValid = true;
Page.ClientScript.RegisterClientScriptBlock(this.Page.GetType(), "UserControl",
"confirm('If Social Security Number is available, please enter it!')", true);
}
コードの問題は、部分的にしか機能しません。たとえば、メッセージ ボックスが表示されますが、[OK] または [キャンセル] をクリックすると、値を入力するオプションが表示されずにページが投稿されます。IsRequired = true で、値が入力されていない場合、検証は失敗しますが、ページは送信されます。これまたはより良いコードを解決するための助けをいただければ幸いです。ソリューションは、DevExpress 固有である必要はなく、一般的なものである可能性があります。
ありがとう