2011-07-17 3 views
0

私はClientValidationFunctionでそのイベントをキャッチしています。JavascriptでASP.netでカスタムバリデータコントロールの引数を取得していますか?

私が抱えている問題は、私はいくつかのプロセスを実行しています。このプロセスの結果は、args.IsValidがtrueまたはfalseであるべきかどうかを判断する必要があります。しかし、私がキャッチしている結果は、私がargsにアクセスする方法を見つけることができないコールバックにあります。

私はvar Args globalyを定義してそこから値を取得しようとしました。それを得ることができませんでした。

私はuserContext経由で送信しようとしました。使用しない(文字列のみを受け入れると思う)。

私はdocument.getElementByIdによってバリデーターを取得しようとしましたが、私はargsプロパティーを見つけることができませんでした。これは私が私に最も論理的なものですが、私はそれを見つけることができません。

私が書いたjavascriptコードはこれと同じです。

function ValidateUserMail(oSrc, args) { 
    var myField = document.getElementById('<%=RegisterUserWizardStep.ContentTemplateContainer.FindControl("Email").ClientID %>'); 
    PageMethods.IsMailAvailable(myField.value, OnSucceeded); 
} 

//i need to edit args value from this function below. 
function OnSucceeded(result, userContext, methodName) { 
    if (methodName == "IsMailAvailable") 
     if (!result) { 
      var myValidator = document.getElementById('<%=RegisterUserWizardStep.ContentTemplateContainer.FindControl("UniqueEmailRequired").ClientID %>'); 
      myValidator.args = false; //doesn't work any ideas about the working property? 
     } 
} 

と、バリデータのためにaspxで書いたコードはこのようです。

<asp:RequiredFieldValidator ID="EmailRequired" runat="server" ControlToValidate="Email" 
    CssClass="failureNotification" ErrorMessage="E-mail is required." ToolTip="E-mail is required." 
    ValidationGroup="RegisterUserValidationGroup">*</asp:RequiredFieldValidator> 

    <asp:CustomValidator ID="UniqueEmailRequired" runat="server" ControlToValidate="Email" 
    CssClass="failureNotification" ErrorMessage="Unique E-mail is required." ToolTip="Unique E-mail is required." 
    ValidationGroup="RegisterUserValidationGroup" ClientValidationFunction="ValidateUserMail">*</asp:CustomValidator> 

ありがとうございます!


更新;ブラウザー内のuniqueEmailValidator JavascriptのレンダリングされたHTML。

var MainContent_RegisterUser_CreateUserStepContainer_UniqueEmailRequired = document.all ? document.all["MainContent_RegisterUser_CreateUserStepContainer_UniqueEmailRequired"] : document.getElementById("MainContent_RegisterUser_CreateUserStepContainer_UniqueEmailRequired"); 
    MainContent_RegisterUser_CreateUserStepContainer_UniqueEmailRequired.controltovalidate = "MainContent_RegisterUser_CreateUserStepContainer_Email"; 
    MainContent_RegisterUser_CreateUserStepContainer_UniqueEmailRequired.errormessage = "Unique E-mail is required."; 
    MainContent_RegisterUser_CreateUserStepContainer_UniqueEmailRequired.validationGroup = "RegisterUserValidationGroup"; 
    MainContent_RegisterUser_CreateUserStepContainer_UniqueEmailRequired.evaluationfunction = "CustomValidatorEvaluateIsValid"; 
    MainContent_RegisterUser_CreateUserStepContainer_UniqueEmailRequired.clientvalidationfunction = "ValidateUserMail"; 

答えて

1

引数ValueIsValid
に2つのプロパティがあり、これを試してみてください

myValidator.args.Value = '3434'; 
    myValidator.args.IsValid = true or false ; 
+0

はyouuありがとうございました!!あなたの非常に速い答えのために、私はこのエラーを得ています。 Microsoft JScriptランタイムエラー: 'Value'プロパティの値を設定できません:オブジェクトがnullまたは未定義(最初の行)とMicrosoft JScriptランタイムエラー: 'IsValid'プロパティの値を設定できません:オブジェクトがnullまたは未定義です2行目の場合) – umutto

+0

IEや他のブラウザでもこのエラーが発生しています。他のbroswerを試してみてください。 –

+0

私は以前のコメントを申し訳なく思っています。私は解決策を再構築しています。なぜそれが私にエラーを与える:Microsoft JScriptランタイムエラー: 'ValidateUserMail'は未定義です。今私は何かを変えることを覚えていませんが、私はそれに焦点を当てます。私は他のブラウザで試してみましたが、デバッガは添付されていないのでエラーは出ませんでしたが、何も起こりませんでした。私はレンダリングされたhtmlで答えを更新しています。もう一度、助けてくれてありがとう! – umutto

0

を試してみてください。

function ValidateUserMail(oSrc, args) { 
     var myField = document.getElementById('<%=RegisterUserWizardStep.ContentTemplateContainer.FindControl("Email").ClientID %>'); 
     PageMethods.IsMailAvailable(myField.value, function (result, userContext, methodName) { args.IsValid = result; }); 
    } 
+0

ありがとうございました!私は最初にそれを見たときに私の目が輝いたが、それでも機能タグの中には親関数のargsが見えないので違いはない。 – umutto

関連する問題