从按钮onclick事件调用C#函数

时间:2013-06-06 17:24:03

标签: c# asp.net

我试图从按钮onclick事件调用一个函数,但它没有执行该函数。以下是代码:

<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"/>

2 个答案:

答案 0 :(得分:4)

我首先将代码放在代码中,而不是将其嵌入页面中。如果您将其嵌入页面,那么我认为您需要将语言指定为C#

除此之外,您的代码看起来不会起作用,如果您修改它,它将会对SQL注入攻击开放。我建议采取以下步骤:

  1. 将您的点击事件移至
  2. 后面的代码
  3. 阅读Parameterized Queries
  4. 您访问文本框的方法似乎也不必要地复杂。您是否有理由使用FindControl而不是仅使用控件的名称?

答案 1 :(得分:2)

当Visual Studio和C#在WebForms和MVC中提供内置完整用户注册系统的非常好的开箱即用模板时,为什么要创建登录和注册代码。

在创建新VS项目(我的示例来自VS2012)并选择

时查看模板

“Visual C# - &gt; Web-&gt; ASP.NET Web窗体应用程序”

OR

“Visual C# - &gt; Web - &gt; ASP.NET MVC 4 Web应用程序 - &gt; Internet应用程序”

这些将为您提供更强大的起点,删除您需要为自己编写的代码量,并且更不容易发生SQL注入攻击。