2011-12-09 28 views
-2

我試圖在ASP.NET中獲取詳細信息視圖來顯示登錄用戶的詳細信息。我已被告知使用方法:asp.net/sql user.identity.name

select * from STAFF where USERNAME = user.identity.name 

我認爲這是太簡單了,是真實的,我是正確的,因爲它沒有顯示出數據,當我嘗試運行。任何幫助,請..

+0

您正在使用哪種類型的身份驗證?您是否使用.net會員供應商。它是否連接到Active Directory或它是否形成身份驗證?你在使用什麼類型的數據庫?找出最好的方法是查看數據庫並檢查aspnet_xxxx表是否存在。如果沒有,那麼我沒有太多的繼續。 – gsirianni

+0

使用SQL數據庫時,存在asp.net_xxxx表並使用表單身份驗證。 – user1055487

+0

我不認爲他們打算使用字符串'user.identity.name'。我認爲它們意味着在USERNAME等於已登錄用戶的'User.Identity.Name'屬性的值的情況下構造一條SQL語句。 – tvanfosson

回答

0

我剛剛試圖做同樣的事情。對於我想要做的事情來說,這太令人頭疼了,所以我最終從頭開始構建表單。如果你想使用明細查看您可以撥打

aspnet_Membership_GetUserByName或 aspnet_Membership_GetUserByEmail或 aspnet_Membership_GetUserByUserId

並填充一個DataTable或數據集的結果和DataBind已到您的DetailsView。但是,如果您可以避免使用DetailsView,我會推薦它,因爲您規避了會員提供商,而這完全違背了首次使用它的目的。

嘗試通過創建CustomMembershipProvider來擴展SqlMembershipProvide r並覆蓋並重載GetUser()方法返回可輕鬆綁定到Details View的DataTable

這將是這個樣子>

using System.Web.Security; 
using System.Data; 

namespace yourNameSpace 
{ 

    public class CustomSqlMembershipProvider : SqlMembershipProvider 
    { 


     public override MembershipUser GetUser(object providerUserKey, bool userIsOnline) 
     { 
      return base.GetUser(providerUserKey, userIsOnline); 
     } 

     public DataTable GetUser(string UserName) 
     { 
      MembershipUser user = base.GetUser(username, false); 

      //code to create a datatable and populate it with user properties. 
      DataTable dt = new DataTable(); 

      //Add columns 
      DataColumn column = new DataColumn(); 

      //add columns to table 

      return dt; 
     } 
    } 
} 

確保您引用您的新成員資格提供在你的web.config時,即可大功告成。

幫助這給你一些方向。它需要一些工作,但最終更容易維護,然後對繞過代碼的任何成員進行故障診斷。