Пользовательская проверка не работает в ASP.NET

Мне нужно иметь пользовательскую проверку для операции «Сохранить» на моей странице. Требование состоит в том, что мне нужно отобразить предупреждение, и когда я нажимаю кнопку «ОК» в предупреждении, моя страница не должна быть отправлена ​​обратно. Вот мой код.

function RedirectForSaveValidation(source,arguments) {

    var StatusFlag = '';
    StatusFlag = document.getElementById('<%= HiddenStatusFlag.ClientID%>');

    if (StatusFlag == "F") {
        alert("Selected student entry has been qualified for lead. Entry cannot be modified...!");
        arguments.IsValid = false;
    }
    if (StatusFlag == "Q") {
        alert("Selected student has been scheduled for interview/counselling. Entry cannot be modified...!");
        arguments.IsValid = false;
    }
    if (StatusFlag == "S") {
        alert("Selected student entry has been scheduled with interview/counselling. Entry cannot be modified...!");
        arguments.IsValid = false;
    }
    if (StatusFlag == "I") {
        alert("Selected student entry has been converted to Intake. Entry cannot be modified...!");
        arguments.IsValid = false;
    }
    window.location.assign("EnquiryRegister.aspx");
}

Я вызываю эту функцию нажатием кнопки.

<asp:Button ID="btnSaveEnquiryRegister" runat="server" Text="Save Enquiry Register" CssClass="button" OnClick="btnSaveEnquiryRegister_Click" ValidationGroup="valEnquiry" OnClientClick="RedirectForSaveValidation();"/>

Проблема в том, что я не получаю никаких предупреждений, как я указал, и моя страница возвращается. Что мне не хватает?


person MusicLovingIndianGirl    schedule 23.10.2013    source источник


Ответы (4)


Правильным способом решения этой проблемы было бы использование элемента управления CustomValidator и его свойства ClientValidationFunction. Благодаря этому вы можете интегрировать проверку на стороне клиента с функциональностью проверки ASP.NET.

Взгляните на пример в документации MSDN.

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.customvalidator.clientvalidationfunction.aspx

Надеюсь, поможет!

С уважением,

Урош

person Uroš Goljat    schedule 23.10.2013

Вы используете функцию пользовательской проверки непосредственно при нажатии кнопки. Посмотрите, вы передаете два параметра в функцию, а OnClientClick вы не передаете параметры. этот метод следует вызывать через элемент управления CustomValidator asp.net.

Или просто удалите параметры из метода. Использовать метод без параметров

person Kamran Ajmal    schedule 23.10.2013
comment
но как мне сохранить свою страницу, не публикуя ее обратно? - person MusicLovingIndianGirl; 23.10.2013
comment
не используйте аргументы.IsValid = false; вместо этого используйте return false; и при вызове используйте OnClientClick=return RedirectForSaveValidation(); - person Kamran Ajmal; 23.10.2013

ну, это неправильный способ реализации пользовательского валидатора. Посмотрите на этот http://www.w3schools.com/aspnet/control_customvalidator.asp и http://www.w3schools.com/aspnet/showaspx.asp?filename=demo_customvalidator (покажите, как это сделать правильно), но все же, если вы хотите выполнить такую ​​проверку, вы должны вернуть false, если она недействительна.

поэтому ваша функция проверки должна возвращать true (в случае, если она действительна) или false, а затем

<asp:Button ID="btnSaveEnquiryRegister" runat="server" Text="Save Enquiry Register" CssClass="button" OnClick="btnSaveEnquiryRegister_Click" ValidationGroup="valEnquiry" OnClientClick="return RedirectForSaveValidation();"/> 
person Kiarash    schedule 23.10.2013

Я такой глупый! Проблема заключалась в получении значения моего скрытого поля.

var StatusFlag = '';
StatusFlag = document.getElementById('<%= HiddenStatusFlag.ClientID%>').value;

Я пропустил свойство value, поэтому переменная имела пустое значение, что привело к сбою валидатора.

person MusicLovingIndianGirl    schedule 23.10.2013