首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查用户名是否存在

检查用户名是否存在
EN

Stack Overflow用户
提问于 2012-10-04 07:33:50
回答 2查看 2.7K关注 0票数 1

我正在开始编码一个网站的工作,目前我正在做一个用户创建页面。所有的验证都工作得很好,但是我不确定要在checkUsername方法中输入什么才能验证用户名是否已经存在。下面是我的ASP.NET代码。

代码语言:javascript
复制
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
  <p>
  <asp:ValidationSummary ID="ValidationSummary1" runat="server" HeaderText="There were errors on the page:" />
  </p>
  <p>
      <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"  ControlToValidate="username" ErrorMessage="Username is required."> *</asp:RequiredFieldValidator>
  Enter Username <asp:TextBox ID="username" runat="server"></asp:TextBox>
     <asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ControlToValidate="username" ErrorMessage="Username must be 4-10 letters or numbers." ValidationExpression="[a-zA-Z0-9]{4,10}" />
        <asp:CustomValidator ID="CustomValidator1" runat="server" controltovalidate="username" errormessage="Username is already in use." OnServerValidate="checkUsername" />
 </p>
 <p>
 Enter Password <asp:TextBox ID="entPWD" runat="server" TextMode="Password"></asp:TextBox>
        <asp:RegularExpressionValidator ID="RegularExpressionValidator2" runat="server" display="dynamic" ControlToValidate="entPWD" ErrorMessage="Password must contain one of the following: @#$%^&*/." ValidationExpression=".*[@#$%^&*/].*" />
        <asp:RegularExpressionValidator ID="RegularExpressionValidator3" runat="server" display="dynamic" ControlToValidate="entPWD" ErrorMessage="Password must be 6-12 characters." ValidationExpression="[^\s]{6,12}" />
 </p>
 <p>
 Confirm Password <asp:TextBox ID="confPWD" runat="server" TextMode="Password"></asp:TextBox>
        <asp:CompareValidator ID="CompareValidator1" runat="server" ControlToValidate="entPWD" ControlToCompare="confPWD" ErrorMessage="Passwords do not match." />
    </p>
    <asp:Button type="submit" ID="Button1" runat="server" Text="Submit" />
</asp:Content>

这是我的代码:

代码语言:javascript
复制
public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    private bool checkUsername(string username)
    {
        string connString = "Data Source=serveraddress;Initial Catalog=database;User Id=username;Password=password;";
        string cmdText = "SELECT COUNT(*) FROM igs_users WHERE username = @username";

        using(SqlConnection conn = new SqlConnection(connString))
            {
            conn.Open();

            using(SqlCommand cmd = new SqlCommand(cmdText, conn))
                {
                cmd.Parameters.AddWithValue("@username", username);

                int count = (int)cmd.ExecuteScalar();

                return (count > 0);
                }
            }
    }
}

当我运行代码时,我得到以下错误消息:

代码语言:javascript
复制
Compiler Error Message: CS1061: 'ASP.default_aspx' does not contain a definition for 'checkUsername' and no extension method 'checkUsername' accepting a first argument of type 'ASP.default_aspx' could be found (are you missing a using directive or an assembly reference?)

我不确定我错在哪里。我在后面的代码中使用了System.Data.SqlClient;,还添加了对system.data.dll的引用。

任何帮助都将不胜感激!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-04 07:36:04

自定义验证方法需要以下方法签名:

代码语言:javascript
复制
void checkUsername(object source, ServerValidateEventArgs args)

ServerValidateEventArgs将具有该值,而不是以字符串的形式传递用户名。

不是返回true或false进行验证,而是使用下面的代码:

代码语言:javascript
复制
args.IsValid = true; 

有关使用CustomValidators的更多信息,请参阅此页面:http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.customvalidator.onservervalidate(v=vs.80).aspx

票数 5
EN

Stack Overflow用户

发布于 2012-10-04 07:36:15

尝试将方法设置为public而不是private。您的ASPX页面正在尝试访问它,但它是private

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12718345

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档