2011-04-03 41 views
0

我有我的網站設置了2個不同的角色,然後當然是匿名的。 我有超鏈接讓登錄用戶訪問他們的帳戶頁面,但我希望每個角色都有相同的超鏈接。例ASP.NET C#超鏈接取決於角色

如果角色是管理我想要的鏈接「我的賬戶」去管理/ myaccount.aspx 如果角色是賣家我想鏈接「我的賬戶」轉到賣方/ myaccount.aspx

我已經使用了一個鏈接按鈕,並計劃添加ifs到C#但我不確定如何根據角色做出一個任何想法?

馬克

+1

我建議不要使用這種構造。例如,當用戶獲得新角色時,他依靠書籤時可能看不到新帳戶部分。你確定這是你想要的嗎?爲什麼不爲所有用戶(/帳戶)使用相同的URL,並讓頁面根據用戶所處的角色自行定製?然後,您可以使用@Pepto下面的答案來自定義頁面(顯示或隱藏控件) – 2011-04-03 11:54:19

回答

0

假設窗體身份驗證 - 在IsInRole

System.Security.Principal.IPrincipal _user = System.Threading.Thread.CurrentPrincipal; 
      if (_user.IsInRole("admin")) 
      { 
       //Set link to admin link 
      } 
      else 
      { 
       //Set to other link 
      } 

更多信息:在ASP.NET http://msdn.microsoft.com/en-us/library/system.security.principal.iprincipal.isinrole.aspx

+0

嗨,Pepto感謝您的幫助。我已經插入了你添加的代碼,但目前我有一個管理員用戶,但它不適用於他們,只是使用else語句,我假設我必須在它之前添加一些東西,但不確定有什麼想法? – Mark 2011-04-03 18:21:39

+0

用於角色名稱的字符串名稱與您正在查找的內容完全匹配非常重要。如果使用表單身份驗證,則通常由您自己的自定義角色提供程序分配。如果使用基於Window的身份驗證,它通常以「BUILTIN \」開頭。恐怕沒有足夠的空間來完全覆蓋在校長上創建角色。請查看http://msdn.microsoft.com/en-us/library/wefzhcez(v=VS.71).aspx,以便在此主題上取得良好的開端 – Pepto 2011-04-04 08:18:03

0

兩種方法,使用HyperLink控制:

  1. 使用兩HyperLink具有相同標題的控件「My Acco不「,但具有不同的NavigateUrl屬性。檢查用戶的角色並在Page_Load功能中動態設置正確的鏈接visible
  2. 使用一個HyperLink控件,標題爲「我的帳戶」,並在Page_Load函數中設置正確的NavigateUrl屬性。