Получить аргументы пользовательского контроля Validator в ASP.net с помощью Javascript? - PullRequest
0 голосов
/ 17 июля 2011

Так что у меня есть, что я ловлю событие с помощью ClientValidationFunction.

Проблема, с которой я столкнулся, заключается в том, что я выполняю какой-то процесс с ним, и результат этого процесса должен определить, должно ли значение args.IsValid быть истинным или ложным.Но результаты, которые я ловлю, находятся в обратном вызове, где я не могу найти способ доступа к аргументам.

Я определил глобальную переменную var Args и попытался получить значение оттуда;не могу получить.

Я пытался отправить его через 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>

Большое спасибо!


Update;визуализированный HTML для Javascript uniqueEmailValidator в браузере;

    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";

Ответы [ 2 ]

0 голосов
/ 17 июля 2011

Попробуйте это:

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 голосов
/ 17 июля 2011

есть два свойства в аргументах Value и IsValid
попробуйте

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