Проверка не работает при добавлении строки запроса

Мои проверки не работают при перенаправлении с одной страницы на другую при передаче строки запроса в качестве параметра с response.redirect или с windows.location.href,

Когда я перенаправляю с одной страницы на другую с этим:

<asp:Button ID="New" runat="server" Text="New" OnClientClick="Transfer()" />

 function Transfer() {
        window.location.href = "Abc.aspx?flag=yes"; //when adding query string my validation doesnt work
        //window.location.href = "Abc.aspx";// When removing query string my validation successfully works
    }

Затем я попытался со стороны сервера, как это:

<asp:Button ID="New" runat="server" Text="New" OnClick="New_Click" />
 protected void btnNewApplicant_Click(object sender, EventArgs e)
        {
            Response.Redirect("Abc.aspx?flag=yes", false); //again not working with this.
        }

Когда я нажимаю на эту кнопку New, я получаю сообщение об ошибке в консоли:

Эта ошибка должна делать что-нибудь с этой опцией:EnableEventValidation="false" как вы можете видеть в моем коде??

Примечание: по какой-то причине мне нужно передать параметр в виде строки запроса.

Abc.aspx:

<%@ Page Title="" Theme="---" Language="C#" MasterPageFile="---" AutoEventWireup="true" CodeBehind="---" EnableEventValidation="false" Inherits="---" %>

     <asp:TextBox ID="txt1" runat="server"></asp:TextBox>
     <asp:RequiredFieldValidator ID="rf1" runat="server" ErrorMessage="require" ForeColor="Red" ControlToValidate="txt1" Display="None" ValidationGroup="validate"></asp:RequiredFieldValidator>

     <asp:TextBox ID="txt2" runat="server"></asp:TextBox>
     <asp:RequiredFieldValidator ID="rf2" runat="server" ErrorMessage="require" ForeColor="Red" ControlToValidate="txt2" Display="None" ValidationGroup="validate"></asp:RequiredFieldValidator>

<asp:Button ID="btnSubmit" runat="server" Text="Save" ValidationGroup="validate" OnClick="btnSubmit_Click" UseSubmitBehavior="true" OnClientClick="checkvalidation()"/> //on click of this i want to perform validation but it is not working.
<telerik:RadCodeBlock ID="radcodeblock1" runat="server" EnableViewState="true">
 <script type="text/javascript">
    function checkvalidation() {
            window.Page_ClientValidate('validate');
            var counter= 0;
            var val= '';
            for (var i = 0; i < window.Page_Validators.length; i++) {
                if (!window.Page_Validators[i].isvalid && typeof (window.Page_Validators[i].errormessage) == "string") {
                    counter= 1;
                    val+= '-  ' + window.Page_Validators[i].errormessage + '<br>';
                }
            }
            if (counter== 1) {
              //My validation pop up to display validations alert because this counter value remains 0 so this part is not executed.
            }
        }
 </script>
</telerik:RadCodeBlock>

Теперь, когда я нажимаю кнопку "Отправить", происходит событие моего кода на стороне сервера, но появляется мое всплывающее окно проверки.

Я даже поместил эту строку в web.config:

  <add key="ValidationSettings:UnobtrusiveValidationMode" value="None"></add>

Но это все еще не работает, так как удаление строки запроса из response.redirect или из windows.location.href, после чего моё всплывающее окно проверки успешно появляется и работает нормально.

Кто-нибудь может мне помочь??

1 ответ

Решение

Если, как вы говорите, window.Page_Validators[i].isvalid является false а также typeof (window.Page_Validators[i].errormessage) является trueтогда мы должны перейти в состояние "если". Счетчик должен быть установлен в 1, а затем должен перейти в "если" позже.

Я немного изменил проверки и добавил журналы консоли, чтобы помочь вам. Если кто-то не знает, вы можете просмотреть эти сообщения, нажав F12 в браузере и нажав "Консоль".

function checkvalidation() {
        window.Page_ClientValidate('validate');
        var counter= 0;
        var val= '';
        for (var i = 0; i < window.Page_Validators.length; i++) {
            if ( (window.Page_Validators[i].isvalid === false) && typeof (window.Page_Validators[i].errormessage) == "string") {
                console.log("Inside the if condition");
                console.log(window.Page_Validators[i]);
                counter = 1;
                val+= '-  ' + window.Page_Validators[i].errormessage + '<br>';
            }
        }
        if (counter === 1) {
          //My validation pop up to display validations alert because this counter value remains 0 so this part is not executed.
        }
    }
Другие вопросы по тегам