自定义验证在ASP.NET中不起作用

时间:2013-10-23 06:36:13

标签: asp.net custom-validators

我需要在页面中对“保存”操作进行自定义验证。要求是,我需要显示警报,当我单击警报中的“确定”按钮时,不应回发我的页面。 这是我的代码。

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();"/>

问题是,我没有收到任何警报,因为我已经指定并且我的页面被回发了。我错过了什么?

4 个答案:

答案 0 :(得分:2)

解决此问题的正确方法是使用CustomValidator控件及其ClientValidationFunction属性。有了这个,您可以将客户端验证与ASP.NET验证功能集成。

查看MSDN文档中的示例。

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

希望它有所帮助!

此致

UROS

答案 1 :(得分:0)

您正在点击按钮时直接使用自定义验证功能。看看你在函数和OnClientClick中传递了两个参数,你没有传递参数。这个方法应该通过asp.net的CustomValidator控件来调用。

或者只是从方法中删除参数。使用不带参数的方法

答案 2 :(得分:0)

这不是实现自定义验证器查看此http://www.w3schools.com/aspnet/control_customvalidator.asphttp://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();"/> 

答案 3 :(得分:0)

傻傻的我!问题在于获得隐藏字段的价值。

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

我错过了包含value属性,因此变量的值为空,导致验证程序失败。