2

クライアント側での customvalidator の設定に問題があります。特定の隠しフィールド値に基づいて、ボタンの onClientClick イベントは、CustomValidator の isValid プロパティを false に設定する関数を起動する必要があります。

以下はいくつかのコードです: コードビハインド:

protected void Page_Load(object sender, EventArgs e)
{
    if (hiddenfieldValue == true)
    {
        btnSend.OnClick = "someJavascriptFunction()";
    }
}

ASPX ファイル:

function someJavascriptFunction()
{
    if (hiddenfieldValue == true)
      // Show Validation and dont do postback
      vldValdiator.isValid = false; 
      return false;   //Dont do Postback
    else
      return true; Do Postback
}

<asp:CustomValidator ID="vldValidator" runat="server" Text = "ABC"/>

クライアント側ベースの隠しフィールド値に isValid プロパティを設定できません。助けてください 。前もって感謝します。

4

2 に答える 2

3

方法 1

Page_IsValidボタンの onClientClick イベント内でプロパティを false に設定してみてください。これにより、asp.netバリデーターに関する限り、ページが非検証状態になります。

基本的な例

function ButtonOnClickClient()
{
   if ($('#hiddenFieldID').val() == 'someValue')
   {
      Page_IsValid = false;
   }
}

正直なところ、Page_IsValid プロパティがリセットされないとは思えません。あなたは試す必要があるでしょう

方法 2

customvalidator クライアントの検証で非表示フィールドをチェックし、それに基づいて検証に合格または不合格にすることができます。ボタンの onclient クリック イベントはPage_ClientValidate()、ページの検証を強制する関数を呼び出すことができます。これにより、正しい検証プロパティが設定されます。

基本例2

function CustomValidatorClientValidate(source, arguments)
   {
        if ($('#hiddenFieldID').val() == 'someValue'){
            arguments.IsValid = true;
        } else {
            arguments.IsValid = false;
        }
   }

function ButtonOnClientClick()
{
    Page_ClientValidate();
}

これは JQuery を使用します。その方法で例を書く方が簡単だからです。それを使用することは決して強制されません。また、asp.netバリデーターAPIが存在すると仮定しています。これらのコントロールを含めた場合はそうなるはずですが、関数名のチェックを追加することでいつでも引き締めることができます

また

おそらくあなたがなる検証グループを使用している場合、呼び出しは次のようになります

Page_ClientValidate(validationGroupName);

方法 3

あなたはそれについて試すことができますが、customvalidator の isvalid プロパティを設定してください。これにより、必要なバリデーターをより直接的に制御できるようになります。以下のリファレンスは言う

isvalid Boolean プロパティ。これは、現在有効かどうかを示す各クライアント バリデータのプロパティです。

最初の 2 つと似たようなことをしましたが、個人的には試していません。

一般に

使用している一般的な方法は、asp.net バリデーターが使用する JavaScript API を直接操作することです。とてもきれいではありませんが、必要なコントロールを得ることができます

参照

これにより、使用しようとしている JavaScript API への参照が提供されます。長い記事ですが、あなたが望むビットは約半分です

http://msdn.microsoft.com/en-us/library/Aa479045

幸運を

もっと

私は本当にこれを残す必要がありますが、あなたのコードはここで間違っています - それは OnClientClick です。

 btnSend.OnClientClick = "someJavascriptFunction()";
于 2013-06-22T14:11:25.270 に答える