2013-05-26 77 views
0

我不知道爲什麼我的驗證不起作用,因爲當我點擊創建按鈕頁面只刷新即使我的領域沒有輸入任何值。但是,當我在用戶名字段處鍵入值時,REgularValidator將顯示爲偶數。ASP.net驗證無火

<%@ Page Title="" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" 
CodeFile="createmember.aspx.cs" Inherits="member" %> 
<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="Server"> 
    <script type="text/javascript"> 
     $(document).ready(function() { 
       $("#MainContent_username").change(function() { 
        var uname = $("#MainContent_username"); 
        var msgbox = $("#status"); 
        if (uname.val().length < 6) { 
         msgbox.html('<font color="#cc0000">User Name must be more than 5 characters</font>'); 
        } else { 
         $.ajax({ 
          type: "POST", 
          url: "createmember.aspx/DoesUserExist", 
          data: "{'username': '" + uname.val() + "'}", 
          contentType: "application/json; charset=utf-8", 
          dataType: "json", 
          success: function (msg) { 
           if (msg.d == false) { 
            msgbox.html('<font color="Green">User Name Available </font>'); 
           } 
           else { 
            msgbox.html('<font color="Red">User Name Exist</font>'); 
           } 
          } 
         }); 
        } 
       }); 
      }); 
     </script> 
    </asp:Content> 
    <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="Server"> 
     <h2> 
      Create Member</h2> 

     <fieldset> 
      <div id="createform"> 
       <div class="formlabel"> 
        Login Name :</div> 
       <asp:TextBox ID="username" runat="server"></asp:TextBox> 
       <asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" 
        ControlToValidate="username" ErrorMessage="RegularExpressionValidator" 
        SetFocusOnError="True"></asp:RegularExpressionValidator> 
       <span id="usernameempty"></span> 
       <span id="status"></span> 
       <br /> 
       <div class="formlabel"> 
        Password :</div> 
       <asp:TextBox ID="password" runat="server" TextMode="Password"></asp:TextBox> 
       <br /> 
       <div class="formlabel"> 
        First Name :</div> 
       <asp:TextBox ID="firstname" runat="server"></asp:TextBox> 
       <br /> 
       <div class="formlabel"> 
        Last Name :</div> 
       <asp:TextBox ID="lastname" runat="server"></asp:TextBox> 

       <br /> 
       <div class="formlabel"> 
        Email :</div> 
       <asp:TextBox ID="email" runat="server"></asp:TextBox> 
       <br /> 
       <div class="formlabel"> 
        User Role :</div> 
       <asp:DropDownList ID="role" runat="server"> 
        <asp:ListItem Value="2">Admin</asp:ListItem> 
        <asp:ListItem Value="3">Staff</asp:ListItem> 
        <asp:ListItem Value="4">Driver</asp:ListItem> 
        <asp:ListItem Value="5">Manager</asp:ListItem> 
        <asp:ListItem Value="1">Super Admin</asp:ListItem> 
       </asp:DropDownList> 
       <br /> 
       <asp:Button ID="submit" runat="server" Text="Create" OnClick="submit_Click" /> 
       <br /> 
       <asp:Label ID="msg" runat="server" Text=""></asp:Label> 
       <div style="clear: both;" /> 
      </div> 
     </fieldset> 
    </asp:Content> 

我的後端代碼。

static string connectionString; 
protected void Page_Load(object sender, EventArgs e) 
{ 
    connectionString = "SERVER=localhost;DATABASE=db;UID=root;PASSWORD=password;"; 
} 
protected void submit_Click(object sender, EventArgs e) 
{ 
    string usertypevalue = role.SelectedValue.ToString(); 
    string firstnamevalue = firstname.Text; 
    string lastnamevalue = lastname.Text; 
    string usernamevalue = username.Text; 
    string passwordvalue = password.Text; 
    if (!DoesUserExist(usernamevalue)) 
    { 
     MySqlConnection connect = new MySqlConnection(connectionString); 
     MySqlCommand command = connect.CreateCommand(); 

     command.CommandText = "Insert into user (UserTypeID, FirstName, LastName, LoginName, LoginPassword, DateTimeCreated, LastLoginDate) values ('" 
      + usertypevalue + "','" + firstnamevalue + "','" + lastnamevalue + "','" + usernamevalue + "','" + passwordvalue + "','" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "','0000-00-00 00:00:00')"; 
     try 
     { 
      //connect.Open(); 
      // command.Connection = connect; 
      //command.ExecuteNonQuery(); 
      msg.Text = "Member account created successfully"; 
      msg.ForeColor = System.Drawing.Color.Green; 
     } 
     catch 
     { 
      msg.Text = "Error Occured, Please try again!"; 
      msg.ForeColor = System.Drawing.Color.Red; 
     } 
     finally 
     { 
      connect.Close(); 
     } 
    } 
    else 
    { 

    } 
} 

[System.Web.Services.WebMethod] 
public static bool DoesUserExist(string username) 
{ 
    bool exist = false; 
    MySqlConnection connect = new MySqlConnection(connectionString); 
    try 
    { 

     connect.Open(); 
     string query = "SELECT Count(*) FROM User WHERE LoginName = '" + username + "'"; 
     //Create Mysql Command 
     MySqlCommand cmd = new MySqlCommand(query, connect); 

     //ExecuteScalar will return one value 
     int Count = int.Parse(cmd.ExecuteScalar() + ""); 
     if (Count > 0) 
     { 
      exist = true; 
     } 
    } 
    finally 
    { 
     connect.Close(); 
    } 
    return exist; 
} 
+0

你需要做什麼RegularExpressionValidator –

回答

1

如果輸入控件爲空,則驗證成功。如果相關輸入控件需要一個值,則除了RegularExpressionValidator控件外,還需使用RequiredFieldValidator控件。

RegularExpressionValidator

0

似乎問題的ValidationGroup ...如果你需要驗證按鈕任何控制點擊控制,驗證和按鈕應該是在同一集團,所以如果你用你的文本框下面,驗證和按鈕,我希望它能解決你的問題

<asp:TextBox ID="username" ValidationGroup="group1" runat="server"></asp:TextBox> 
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" 
     ControlToValidate="username" ValidationGroup="group1" ErrorMessage="RegularExpressionValidator" 
       SetFocusOnError="True"> 
</asp:RegularExpressionValidator> 
............ 
<asp:Button ID="submit" runat="server" ValidationGroup="group1" Text="Create" OnClick="submit_Click" />