1

私の検索フォームには、日付とオブジェクト ID の 2 つのフィールドがあります。私はこのような日付検証を使用しています:

<asp:CompareValidator ID="cv" runat="server" Operator="GreaterThanEqual" Type="Date"
                                ControlToValidate="dateControl" ValueToCompare="" Display="None" SetFocusOnError="False"
                                ErrorMessage="error msg" EnableClientScript="True"/>

ValueToCompare は分離コードから設定されます (今から 10 日前)。

オブジェクト ID フィールドが空でない場合は、日付の検証を実行したくありません (日付の制限なしで検索できます)。CustomValidator を使用しないソリューションとは?

4

2 に答える 2

0

コード ビハインド ファイルで 'Enabled' プロパティを false に設定するだけです。検証は Page.Load イベントの後、検証をトリガーしたボタンまたはコントロールのイベントが発生する直前に実行されます。

// マークアップ部分

<asp:CompareValidator ID="cv" runat="server" Operator="GreaterThanEqual" Type="Date"
ControlToValidate="dateControl" ValueToCompare="" Display="None" SetFocusOnError="False"
ErrorMessage="error msg" EnableClientScript="True"/>

// コード ビハインド ファイル

protected void Page_Load(object sender, EventArgs e)
    {
        if(!String.IsNullOrEmpty(ObjectId.Text))
         {
             cv.Enabled=false;
         }
    }

これで、検証が実行されるときに、CompareValidator がスキップされます。2 番目のオプションとして、'Visible' プロパティを false に設定することもできます。ここで MSDN を確認してください。

于 2013-07-19T11:42:23.087 に答える
0

これを確認してください。これがあなたの助けになるかもしれません:

if(!string.IsNullOrEmpty(Objectid.Text))
 cv.ValueToCompare=DateTime.Now.AddDays(1);
else
 cv.ValueToCompare=DateTime.Now.AddDays(-10);
于 2013-07-19T10:12:53.197 に答える