2013-04-15 91 views
0

我有一個編輯配置文件頁面,允許用戶更改他們的信息 - 目前它只允許擁有表格'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 [email protected]" 
    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匹配,我認爲只是評估用戶是否剛從Register.aspx頁面重定向,會更容易一些。 (如果這個評估是真的,那麼就像你上面看到的那樣,將會調用一個單獨的「新用戶」函數)。

這是我的邏輯,但我不知道如果VB.NET有一個「referrer」或「isReferred」表達式? (當時你可以看到我認爲是CrossPagePostback可能是正確的,但沒有運氣!)

任何想法?

+0

我也強烈建議一邊學習[ASP.NET MVC](http://www.asp.net/mvc),或者在適應Web窗體後立即學習。 – MikeSmithDev

+0

好的,謝謝。我會研究這個! – adaam

回答

0

您需要檢查一條記錄是否存在,並根據此邏輯進行。這是做到這一點的唯一正確方法。如:

  1. 如果您引入新頁面來處理註冊,該怎麼辦?這個邏輯打破了。
  2. 如果你有一天你退休,下一個傢伙決定重命名Register.aspx頁面,該怎麼辦?這個邏輯打破了。
  3. 如果用戶點擊返回按鈕並再次單擊註冊按鈕會怎麼樣?這個邏輯可能會中斷。

您還應該考慮該表上的外鍵和唯一約束,以及使用UserId而不是TravellerName。 TravellerName可以改變,UserId不會。

...是的,你可以通過使用HttpRequest.ServerVariables,這會得到你的名單IIS Server Variables推薦頁面。