【发布时间】:2020-02-15 00:14:01
【问题描述】:
我正在尝试获取一个简单的表单以发布到我的 sql 数据库,但是当我单击它时没有任何反应。我试过 runat="Server, onclick, onserverclick 标记,但没有任何反应。
我是 html 表单的新手,所以不知道我是否应该在实际表单之外使用按钮来执行此操作?非常感谢任何帮助
下面是html代码
<div class="register-content" ">
<form method="POST" class="margin-bottom-0">
<label class="control-label">Name <span class="text-danger">*</span></label>
<div class="row row-space-10">
<div class="col-md-6 m-b-15">
<input id="First_Text" type="text" class="form-control" placeholder="First name" required />
</div>
<div class="col-md-6 m-b-15" >
<input id="Last_Text" type="text" class="form-control" placeholder="Last name" required />
</div>
</div>
<label class="control-label">Email <span class="text-danger">*</span></label>
<div class="row m-b-15">
<div class="col-md-12">
<input id="Email_Text" type="text" class="form-control" placeholder="Email address" required />
</div>
</div>
<label class="control-label">Password <span class="text-danger">*</span></label>
<div class="row m-b-15">
<div class="col-md-12">
<input id="Pass_Text" type="password" class="form-control" placeholder="Password" required />
</div>
</div>
<div class="register-buttons">
<button runat="server" onserverclick="ValidateUser" type="button" class="btn btn-primary btn-block btn-lg">Sign Up</button>
</div>
<div class="m-t-20 m-b-40 p-b-40">
Already a registered user? Click <a href="login.aspx">here</a> to login.
</div>
<hr />
<p class="text-center">
© NZAB All Right Reserved 2019
</p>
</form>
</div>
这是背后的代码
Protected Sub ValidateUser(sender As Object, e As EventArgs)
Dim connect As New SqlConnection(ConfigurationManager.ConnectionStrings("NZABFMAD_Users").ToString())
Using coa As New SqlCommand()
With coa
.Connection = connect
.CommandType = CommandType.Text
End With
Try
connect.Open()
Dim insertcmd As String
insertcmd = "INSERT INTO [New_User] (Username,[First name],[Last name],Email,Password) values (@User_Text,@First_Text,@Last_Text,@Email_Text,@Pass_Text)"
coa.CommandText = insertcmd
coa.Parameters.AddWithValue("@User_Text", Request.Form("User_Text"))
coa.Parameters.AddWithValue("@First_Text", Request.Form("First_Text"))
coa.Parameters.AddWithValue("@Last_Text", Request.Form("Last_Text"))
coa.Parameters.AddWithValue("@Email_Text", Request.Form("Email_Text"))
coa.Parameters.AddWithValue("@Pass_Text", Request.Form("Pass_Text"))
coa.ExecuteNonQuery()
connect.Close()
MsgBox("success insert")
Catch ex As Exception
MsgBox("Fail to Save to database")
End Try
End Using
End Sub
当然,在存储在 sql 中时我会加盐/散列密码,但现在我只想让按钮真正触发事件!
【问题讨论】:
-
您是否尝试过删除所有代码并仅使用
Protected Sub ValidateUser(sender As Object, e As EventArgs) Console.WriteLine("test") End Sub之类的函数来查看它是否正在触发但出现某种灾难性的 SQL 错误? -
感谢 EGC 的建议,但问题是事件的触发,当我单击时没有任何反应。如果我在表单元素上添加标签 action="home.html",用户将被重定向到页面,但后面的代码没有任何反应
-
@user2301960 如果您使用 ASP.NET 控件,例如
<asp:TextBox>,那么您将能够通过例如First_Text.Text而不是 Request.Form(...)。