2016-05-19 10 views
0

今日は、私は私のモデルの値にアクセスすることができないという問題があります。取得財産

public void SearchWholeUser(string fullName){ 

     UserADSearch searchUser = new UserADSearch(); 
     List<SpecificADModel> source = new List<SpecificADModel>(); 
     source = searchUser.SearchFull(path, fullName); 

     //string username = the value of username comes here 

     //used to initialize the detailed info frame 
     initializeInfos(source); 
     GetChildRequests(username); 
    } 

値を設定すると、別のクラスで問題なく機能します。リストから価値を引き出すことは可能でしょうか? 私はすでにでそれを試してみました:

string username = source[1].ToString(); 

しかし、それはどちらか動作しませんでした。

新しいADリクエストを作成せずにユーザー名を取得する方法はありますか?事前に

おかげ

編集

SearchFull()このようlokks(私はこれは必要ではないと思う):

public List<SpecificADModel> SearchFull(string direction, string fullName) 
    { 
     //New List in the SpecificADModel format. 
     List<SpecificADModel> users = new List<SpecificADModel>(); 

     try 
     { 
      // New AD search for clicked user on the lefthandside ListView 
      DirectoryEntry entry = new DirectoryEntry(direction, "admin", "pass", AuthenticationTypes.Secure); 

      //searches for all relevant Infos in AD 
      DirectorySearcher searcher = new DirectorySearcher(entry); 
      searcher.Filter = "(&(objectCategory=person)(objectClass=user)(&(cn=" + fullName + ")))"; 
      searcher.PropertiesToLoad.Clear(); 
      searcher.PropertiesToLoad.Add("displayName"); 
      searcher.PropertiesToLoad.Add("samAccountName"); 
      searcher.PropertiesToLoad.Add("givenname"); 
      searcher.PropertiesToLoad.Add("sn"); 
      searcher.PropertiesToLoad.Add("company"); 
      searcher.PropertiesToLoad.Add("department"); 
      searcher.PropertiesToLoad.Add("title"); 
      searcher.PropertiesToLoad.Add("streetAddress"); 
      searcher.PropertiesToLoad.Add("homephone"); 
      searcher.PropertiesToLoad.Add("telephoneNumber"); 
      SearchResult result = searcher.FindOne(); 

      string displayName = result.Properties["displayName"][0].ToString(); 
      string accountName = result.Properties["samAccountName"][0].ToString(); 
      string firstName = result.Properties["givenname"][0].ToString(); 
      string lastName = result.Properties["sn"][0].ToString(); 
      string companyName = result.Properties["company"][0].ToString(); 
      string departmentName = result.Properties["department"][0].ToString(); 
      string jobTitle = result.Properties["title"][0].ToString(); 
      string streetAddress = result.Properties["streetAddress"][0].ToString(); 
      string homePhone = result.Properties["homephone"][0].ToString(); 
      string directPhone = result.Properties["telephoneNumber"][0].ToString(); 

      //Results will be stored in SpeceficADModel Format in the users ListView 
      users.Add(new SpecificADModel() 
      { 
       DisplayName = displayName, 
       Username = accountName, 
       FirstName = firstName, 
       LastName = lastName, 
       CompanyName = companyName, 
       Department = departmentName, 
       JobTitle = jobTitle, 
       AdressBusiness = streetAddress, 
       ReceptionNumberBusiness = homePhone, 
       DirectNumberBusiness = directPhone 
      }); 

      //returns List<> 
      return users; 
     } 
     catch (Exception e) 
     { 
      System.Diagnostics.Debug.WriteLine(e.ToString()); 
      Console.WriteLine(e.ToString()); 
      return null; 
     } 
    } 
+0

私は質問をよく理解していませんでしたが、 rchFullは内部で行います。 – Aamir

+2

多分 'string username = source [1] .Username;'? – SeM

+0

プロパティの追加が完了したらプロジェクトを再構築しましたか? :) – Auguste

答えて

0

これを試してみてください、あなたのList<SpecificADModel>からプロパティ値を取得するには:

List<SpecificADModel> source = new List<SpecificADModel>(); 
string username = source[0].DisplayName; 
string username = source[0].Username; 
string username = source[0].FirstName; 
string username = source[0].LastName; 
. . . . 
+0

これは働いています。ありがとうございました。 Aaaaah私は理解すると思います! したがって、複数のユーザー名が返された場合、2番目のユーザー名は source [1] .Usernameになります。 この権利はありますか? –

+0

@ManuelBürgeそしてトピックを閉じるための答えとしてマークしてください。 – SeM

+1

@ManuelBürgeまた、 'for'ループでこれらの値を取得することもできます。 – SeM

関連する問題