2013-03-12 67 views
1

基本上,我点击提交按钮进入用户表后,基本上已经有用户输入关于他们个人详细信息的数据到文本框中。这工作得很好,直到我对这些文本框和现在所有的验证工作使用验证,但是当提交被点击时,它会进入我链接到该按钮的页面,但是现在没有数据被输入到数据库中的用户表中。asp.net - 将数据从文本框添加到数据库 - 验证停止工作

有什么想法?

我的代码如下所示。谢谢

Protected Sub cmdSubmit_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmdSubmit.Click 

    'add new user' 
    Dim db As New LostPropertyDataContext 
    Dim U As New tblUser With {.Forename = txtforename.Text, 
      .Surname = txtsurname.Text, .DateOfBirth = txtdob.Text, .Gender = txtgender.Text, 
      .Address = txtaddress.Text, .Postcode = txtpostcode.Text, .TelephoneNo = txttelephoneno.Text, 
      .MobileNo = txtmobileno.Text, .Email = txtemail.Text} 
    db.tblUsers.InsertOnSubmit(U) 
    db.SubmitChanges() 
    Response.Redirect("/u1065977/LostPropertyProject/LostProperty2.aspx") 


End Sub 
+0

你有没有检查调试这些txtforename.Text是否有值。 – 2013-03-12 09:57:43

+0

它在调试过程中工作正常,但不在我的服务器上。我不明白:/ – 2013-03-12 10:28:51

+0

然后尝试在服务器上进行调试。对上述代码不起作用的问题的第一个猜测是,您没有从客户端获取任何内容,因此需要添加一个空行。 – 2013-03-12 10:30:59

回答

0

当你说你添加验证,我假设你的意思是你添加验证控件到你的页面。

这是一个很好的做法 - 可以说,一个必要的做法 - 来包装你的代码在测试进行验证是否通过:

If Page.IsValid Then 
    'add new user' 
    Dim db As New LostPropertyDataContext 
    Dim U As New tblUser With {.Forename = txtforename.Text, 
     .Surname = txtsurname.Text, .DateOfBirth = txtdob.Text, .Gender = txtgender.Text, 
     .Address = txtaddress.Text, .Postcode = txtpostcode.Text, .TelephoneNo = txttelephoneno.Text, 
     .MobileNo = txtmobileno.Text, .Email = txtemail.Text} 
    db.tblUsers.InsertOnSubmit(U) 
    db.SubmitChanges() 
    Response.Redirect("/u1065977/LostPropertyProject/LostProperty2.aspx") 
End If 

您正在尝试不检查确认是否有更新传递到服务器端。如果您正在使用任何自定义验证(例如CustomValidator),那么您没有机会向您报告失败的事情。

+0

是的。我正在使用验证控件,并使用属性返回一个错误,如果一个字段没有正确填写,但我如何得到它检查验证? – 2013-03-12 11:24:48

+0

只需将你的代码包装在'If Page.IsValid Then ... End If'中。如果服务器端验证失败,则属性“Page.IsValid”将为false。 – 2013-03-12 11:36:35

+0

仍然不工作 - 我已将代码放在按钮后面。它是否正确?因为它似乎还没有将文本框中的数据添加到数据库中 – 2013-03-12 17:54:08