JQuery Validator插件Asp.Net调用服务器方法

时间:2009-09-18 01:39:27

标签: c# jquery asp.net-3.5 jquery-validate

我使用JQuery Validation插件验证表单(http://docs.jquery.com/Plugins/Validation/

例如,我可以在表单中验证电子邮件。

我想要做的是验证所选用户名是否已存在。所以,我需要调用查询数据库的服务器方法。我怎么能这样做?

更新

从balexandre回答,我尝试以下方法:

$.validator.addMethod("userName", 
    function(value, element)
    {
        $.get
        (
            "CheckUser.aspx?User=" + value, 
            function(data) 
            {
                if (data == "True") 
                {
                    return false;
                }
                else if (data == "False") 
                {
                    return true;
                }
                else 
                {
                    alert(data);
                }
            }
        );
    },
    "User already exists");

    $(document).ready
    (
        function() 
        {
            $("#aspnetForm").validate
            (
                {
                    rules: 
                    {
                        <%=txtUserName.UniqueID %>: 
                        {
                            required: true,
                            email: true,
                            userName: true                        
                        }
                    }
                }
            );
        }
    );

在Response中,我写了一个布尔值(True为False)而不是1 ou 0。

我知道我的验证功能是调用。问题是,即使用户不存在,它也始终显示错误消息。我尝试在返回true之前发出一条警告消息,看它是否达到了,就是这样。所以我不明白,为什么它不起作用......

2 个答案:

答案 0 :(得分:2)

非常简单,这是一个很好的经历,我在我的项目中应用了很多

1 - 使用代码隐藏文件创建一个名为 verifyUserAvailability.aspx 的aspx页面

2 - 删除除aspx文件中第一行以外的所有行

3 - 在 Page_Load 事件中的代码隐藏文件中调用您的数据库

protected void Page_Load(object sender, EventArgs e) {
    string username = Request["usr"];
    int r = 0;

    if(!String.IsNullOrEmpty(username))
        if( yourDAL.getUserAvailability(username) )
            // your method would send true if user is available to be used
            r = 1;

   Response.Clear();
   Response.Write(r);
   Response.Flush();
}

4 - 现在在您的表单页面中,创建一个类似

的按钮
<input id="btnCheckAvailability" type="button" 
       value="Check availability" 
       onclick="javascript:checkAvailability();" />

5 - 创建checkAvailability()方法

<script type="text/language">

    function checkAvailability() {
        var $user = $("#UsernameInputBox");
        $.get("verifyUserAvailability.aspx?usr=" + $user.val(), function(data) {
            // this will call the page passing the username and return 1 or 0
            if( data == "1" ) 
                $user.css("background-color", "green");
            else 
                $user.css("background-color", "red");
        });
    }

</script>

答案 1 :(得分:0)

这应该可以解决问题......

http://riderdesign.com/articles/Check-username-availability-with-JQuery-and-ASP.NET.aspx

... OR

一个答案显示如何拨打服务&amp;第二部分展示了如何调用页面方法。

Calling an ASP.NET server side method via jQuery