2013-06-06 1 views
0

Я пытаюсь вызвать функцию из события onclick на кнопке, но она не выполняет функцию. Ниже приведен код:Вызов функций C# с помощью кнопки onclick event

<script runat="server"> 

    protected void RegistrationButton_Click(object sender, EventArgs e) 
    { 
     TextBox un = Post0.FindControl("aspxTextBox_UserName") as TextBox; 
     TextBox pwd = Post0.FindControl("aspxTextBox_Password") as TextBox; 
     TextBox cpwd = Post0.FindControl("aspxTextBox_ConfirmPassword") as TextBox; 
     TextBox txtE = Post0.FindControl("aspxTextBox_Email") as TextBox; 
     TextBox SQ = Post0.FindControl("aspxTextBox_SecurityQ") as TextBox; 
     TextBox SA = Post0.FindControl("aspxTextBox_SecurityA") as TextBox; 

     if (pwd == cpwd) 
     { 
      System.Data.SqlClient.SqlConnection sqlConnection1 = new System.Data.SqlClient.SqlConnection("ConString_Online_EMS_AFRICA_db"); 

      System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand(); 
      cmd.CommandType = System.Data.CommandType.Text; 
      cmd.CommandText = "INSERT INTO EMSPWD (Username, Password, Email, SecurityQ, SecurityA) VALUES (" + un + ", " + pwd + ", " + txtE + ", " + SQ + ", " + SA + ")"; 
      cmd.Connection = sqlConnection1; 

      sqlConnection1.Open(); 
      cmd.ExecuteNonQuery(); 
      sqlConnection1.Close(); 

      Response.Redirect("02_Registration.aspx"); 
     } 
     else 
     { 
      Console.WriteLine("Passwords don't Match"); 
     } 
    } 
</script> 

<asp:Button ID="RegistrationButton_Click" runat="server" CssClass="emsafrica-button" Text="Click to Create User Account" ValidationGroup="Login1" onclick="RegistrationButton_Click" TabIndex="7"/> 
+5

Ваши пароли являются четким текстом, и вы не используете параметры для оператора SQL. Хлоп. – Yuck

+0

Это код C# внутри ваших тегов скрипта? –

+0

Пожалуйста, также разместите код .aspx, где вы объявите кнопку. –

ответ

4

Я бы начал с размещения кода в коде вместо того, чтобы вставлять его на страницу. Если вы вставляете его на страницу, я думаю, вам нужно указать язык как C#.

В дополнение к этому, ваш код не выглядит так, как будто он будет работать, и если вы его измените, значит, вы будете открыты для атаки SQL Injection. Я рекомендую следующие шаги:

  1. Перемещайте событие щелчка в коду позади
  2. Читать на Parameterized Queries

Вашего метода для доступа к текстовому полю кажется излишне сложным, как хорошо. Есть ли причина, по которой вы используете FindControl вместо того, чтобы просто использовать имя элемента управления?

+0

да - вам действительно не нужно использовать код как есть. –

2

Зачем придумывать логин и код SIGNUP когда Visual Studio и C# обеспечивают очень хорошими из шаблонов коробка в WebForms и MVC, которые имеют полную систему регистрации пользователей, построенную в.

Посмотри шаблоны при создании новый VS проекта (мой пример из VS2012) и выберите

"Visual C# -> веб> Web ASP.NET Forms Application"

ИЛИ

«Visual C# -> Web -> ASP. NET MVC 4 Веб-приложение -> I nternet Application "

Это даст вам значительно более сильные отправные точки, удалит количество кода, которое вам нужно написать для себя, и быть значительно менее подверженным атакам SQL-инъекций.

+0

Хороший звонок. После этого он также может получить много готовых вещей, посмотрев членство в LoginControl ans asp.net. Это один из моментов, когда вы ХОТИТЕ использовать предварительно созданные материалы Microsoft, потому что это предотвратит множество уязвимостей безопасности. –

Смежные вопросы