我有一个编辑个人资料页面,允许用户更改他们的信息 - 目前它只允许在表'userprofiles'中有记录的用户编辑他们的信息。我希望新注册的用户也能够编辑他们的个人资料。
此时,我正在使用ASP.NET成员资格系统和Access数据库中的相应asp.net_表来存储用户凭据。 'userprofiles'表是一个单独的表,其中包含更多个人信息。两个表之间没有链接
这是我背后的代码:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load If IsCrossPagePostBack Then SeparateNewUserFunction() Return End If If Not IsPostBack Then DisplayData() SaveConfirmation.Visible = False End If End Sub
这是我的DisplayData()函数,只要有人对它的作用感兴趣:
Protected Sub DisplayData() Dim conn As OleDbConnection = New OleDbConnection(ConfigurationManager.ConnectionStrings("BookMeetConnString").ConnectionString) Dim sql = "SELECT * FROM userprofiles WHERE TravellerName=@f1" Dim cmd = New OleDbCommand(sql, conn) cmd.Parameters.AddWithValue("@f1", User.Identity.Name) conn.Open() Dim profileDr = cmd.ExecuteReader() profileDr.Read() Dim newEmailAddress = "" Dim newDescription = "" If Not IsDBNull(profileDr("EmailAddress")) Then newEmailAddress = profileDr.Item("EmailAddress") If Not IsDBNull(profileDr("Description")) Then newDescription = profileDr.Item("Description") If Not IsDBNull(profileDr("AvatarURL")) Then ProfilePic.ImageUrl = profileDr.Item("AvatarURL") description.Text = newDescription email.Text = newEmailAddress conn.Close() End Sub
我没有检查“userprofiles”表中是否存在与当前用户的User.Identity.Name匹配的记录,而是认为评估用户是否刚从注册表中重定向会更容易.aspx页面。 (如果此评估为真,那么如上所示,将调用单独的“新用户”功能。)
这是我的逻辑,但我不知道VB.NET是否有“referrer”或“isReferred”表达式? (在你看来我觉得isCrossPagePostback可能是正确的,但没有运气!)
有什么想法吗?
答案 0 :(得分:0)
您需要检查记录是否存在并以此为基础构建逻辑。这是唯一正确的方法。如:
您还应该考虑该表上的外键和唯一约束,以及使用UserId而不是TravellerName。 TravellerName可以更改,UserId不会。
...是的,您可以使用HttpRequest.ServerVariables来引用页面,它会为您提供IIS Server Variables的列表。