0

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 固有である必要はなく、一般的なものである可能性があります。

ありがとう

4

1 に答える 1

0

確認メソッドを使用するのではなく; ユーザーが選択した内容に応じて true または false を返しますが、代わりに Alert() を使用しないのはなぜですか?

IE

return Alert('If Social Security Number is available, please enter it!')

ユーザーが選択することはできません。[OK] ボタンだけです。「return」もポストバックを防ぎます。

于 2012-10-22T18:21:18.290 に答える