我有以下代码RequiredFieldValidator.该EnableClientScript属性在验证控件中设置为"false".我也在浏览器中禁用了脚本.
我没有Page.IsValid在后面的代码中使用.不过,当我在文本框中提交没有任何价值时,我会得到error message.
根据@Dai的评论,我发现这可能是一个问题,如果有任何代码Page_Load在a中执行postback.不会抛出任何验证错误.
(但是,对于按钮单击处理程序,无需检查Page.IsValid)
if (Page.IsPostBack)
{
string value = txtEmpName.Text;
txtEmpName.Text = value + "Appended";
}
Run Code Online (Sandbox Code Playgroud)
题
Page_Load?Page.IsValid?Page.IsValid;但是说明了什么是强制性使用场景Page.IsValid更新1
Page.IsValid只有在之后Page.Validate()隐式调用的run方法之后才能访问Page_Load.如果您将所有逻辑保存在Page_Load事件处理程序中(非常不鼓励!),请Page.Validate()在检查之前调用Page.IsValid.
注意:建议不要保留所有逻辑Page_Load.如果按钮单击事件发生了某些事情,请将其移动到按钮单击事件处理程序.如果在下拉事件中发生某些事情,请将其移至下拉选定的项目更改事件处理程序.
更新2
看起来,我们需要添加If(Page.IsValid)的button click,如果我们使用的是也Custom Validator与服务器端验证.请参阅CustomValidator不能正常工作.
注意:此处存在客户端验证问题:是否使用Page_IsValid或Page_ClientValidate()(对于客户端事件)
MARKUP …
我有以下jQuery代码,以防止双击按钮.它工作正常.我Page_ClientValidate()用来确保只有在页面有效时才会阻止双击.[如果存在验证错误,则不应设置标志,因为没有回发到服务器的启动]
是否有更好的方法可以防止在页面加载之前再次单击按钮?
我们isOperationInProgress = yesIndicator是否可以仅在页面导致回发到服务器时设置标志 ?是否适合event在用户第二次点击按钮之前调用它?
注意:我正在寻找一种不需要任何新API的解决方案
注意:这个问题不重复.在这里,我试图避免使用Page_ClientValidate().此外,我正在寻找一个event我可以移动代码的地方,以便我不需要使用Page_ClientValidate()
注意:我的方案中没有涉及ajax.该ASP.Net表格将被同步提交给服务器.javascript中的按钮单击事件仅用于防止双击.表单提交是使用ASP.Net同步的.
现在的代码
$(document).ready(function () {
var noIndicator = 'No';
var yesIndicator = 'Yes';
var isOperationInProgress = 'No';
$('.applicationButton').click(function (e) {
// Prevent button from double click
var isPageValid = Page_ClientValidate();
if (isPageValid) {
if (isOperationInProgress == noIndicator) {
isOperationInProgress = yesIndicator;
} else {
e.preventDefault();
}
}
});
});
Run Code Online (Sandbox Code Playgroud)
参考文献:
@Peter Ivan在上述参考文献中注意到:
重复调用Page_ClientValidate()可能会导致页面过于突兀(多个警报等).
问题是,验证摘要消息(警报)显示两次.我无法弄清楚原因.
请帮忙.这是代码
function validate() //javascript function
{
if (typeof(Page_ClientValidate) == 'function')
{
var isPageValid = Page_ClientValidate();
if(isPageValid)
{
}
}
}
<asp:Button ID="btn1" runat="server" OnClientClick="validate()" Text="button"
ValidationGroup="ContactGroup" />
<asp:ValidationSummary ID="ValidationSummary1" runat="server" DisplayMode="List"
ShowMessageBox="true" ShowSummary="false" ValidationGroup="ContactGroup" />
Run Code Online (Sandbox Code Playgroud) 我正在使用ASP.NET 2.0,我使用IE8作为我的默认浏览器,但无论我尝试多少次,Page_ClientValidate一直给我这个错误,它没有定义.我怎么解决这个问题?请帮忙.