我试图从按钮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"/>
答案 0 :(得分:4)
我首先将代码放在代码中,而不是将其嵌入页面中。如果您将其嵌入页面,那么我认为您需要将语言指定为C#
。
除此之外,您的代码看起来不会起作用,如果您修改它,它将会对SQL注入攻击开放。我建议采取以下步骤:
您访问文本框的方法似乎也不必要地复杂。您是否有理由使用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注入攻击。