添加查询字符串时验证不起作用
Validation not working when adding query string
在将查询字符串作为参数 与 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
中删除查询字符串然后我的验证弹出窗口成功出现并且工作正常。
如果像你说的那样,window.Page_Validators[i].isvalid
是false
,typeof (window.Page_Validators[i].errormessage)
是true
,那么我们必须进入'if'条件。计数器必须设置为1,之后必须进入'if'。
我稍微更改了检查并添加了控制台日志记录来帮助您。如果有人不知道,您可以通过在浏览器中点击 F12
并点击 "Console".
来查看这些消息
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.
}
}
在将查询字符串作为参数 与 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
中删除查询字符串然后我的验证弹出窗口成功出现并且工作正常。
如果像你说的那样,window.Page_Validators[i].isvalid
是false
,typeof (window.Page_Validators[i].errormessage)
是true
,那么我们必须进入'if'条件。计数器必须设置为1,之后必须进入'if'。
我稍微更改了检查并添加了控制台日志记录来帮助您。如果有人不知道,您可以通过在浏览器中点击 F12
并点击 "Console".
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.
}
}