teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

6

AdInfo.cs の Id の型を修正

2018/12/05 05:45

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -78,7 +78,7 @@
78
78
  {
79
79
  public class AdInfo
80
80
  {
81
- public int Id { get; set; }
81
+ public string Id { get; set; }
82
82
  public string Name { get; set; }
83
83
  public string Mail { get; set; }
84
84
  public string Department { get; set; }

5

AdInfo.cs にコンストラクタ追加、AdController.cs の foreach 内修正

2018/12/05 05:45

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -82,6 +82,15 @@
82
82
  public string Name { get; set; }
83
83
  public string Mail { get; set; }
84
84
  public string Department { get; set; }
85
+
86
+ // 追加:引数を取るコンストラクタを実装
87
+ public AdInfo (string Id1, string Name1, string Mail1, string Department1)
88
+ {
89
+ Id = Id1;
90
+ Name = Name1;
91
+ Mail = Mail1;
92
+ Department = Department1;
93
+ }
85
94
  }
86
95
  }
87
96
  ```
@@ -106,19 +115,22 @@
106
115
  directorySearcher.Filter = String.Format("(&(objectClass=user)(samAccountName={0}))", samAccountName);
107
116
  var result = directorySearcher.FindAll(); // FindOneからFindAllに変更
108
117
 
109
- // ユーザー情報
118
+ // ここから修正
110
- List<AdInfo> UserInfo = new List<AdInfo>();
119
+ List<AdInfo> model = new List<AdInfo>();
111
120
 
112
- // 検索結果でループ
113
121
  foreach (var user in result
114
122
  .Cast<SearchResult>()
115
123
  .Select(x => x.GetDirectoryEntry()))
116
124
  {
125
+ var id = (string)user.Properties["sAMAccountName"].Value;
117
- // ここで、↓のような属性の値を1件ごとにUserInfoに入れたい
126
+ var name = (string)user.Properties["name"].Value;
118
- //var mailAddress = (string)entry.Properties["mail"].Value;
127
+ var mail = (string)user.Properties["mail"].Value;
128
+ var department = (string)user.Properties["department"].Value;
129
+
130
+ model.Add(new AdInfo(id, name, mail, department));
119
131
  }
120
132
 
121
- return View(UserInfo);
133
+ return View(model);
122
134
  }
123
135
  }
124
136
  }

4

UserList()の追加

2018/12/05 05:16

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -84,4 +84,43 @@
84
84
  public string Department { get; set; }
85
85
  }
86
86
  }
87
+ ```
88
+ AdController.cs
89
+ ```C#
90
+ using System.DirectoryServices;
91
+
92
+ namespace Web1.Models
93
+ {
94
+ public class AdController : Controller
95
+ {
96
+ public ActionResult UserList()
97
+ {
98
+ var directoryEntry = new DirectoryEntry();
99
+ var directorySearcher = new DirectorySearcher(directoryEntry);
100
+
101
+ // ユーザーID
102
+ var samAccountName = "ABC12*";
103
+
104
+ // LDAP設定、検索
105
+ directoryEntry.Path = "LDAP://xxx";
106
+ directorySearcher.Filter = String.Format("(&(objectClass=user)(samAccountName={0}))", samAccountName);
107
+ var result = directorySearcher.FindAll(); // FindOneからFindAllに変更
108
+
109
+ // ユーザー情報
110
+ List<AdInfo> UserInfo = new List<AdInfo>();
111
+
112
+ // 検索結果でループ
113
+ foreach (var user in result
114
+ .Cast<SearchResult>()
115
+ .Select(x => x.GetDirectoryEntry()))
116
+ {
117
+ // ここで、↓のような属性の値を1件ごとにUserInfoに入れたい
118
+ //var mailAddress = (string)entry.Properties["mail"].Value;
119
+ }
120
+
121
+ return View(UserInfo);
122
+ }
123
+ }
124
+ }
125
+
87
126
  ```

3

AdInfo.csの編集

2018/12/05 00:54

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -81,6 +81,7 @@
81
81
  public int Id { get; set; }
82
82
  public string Name { get; set; }
83
83
  public string Mail { get; set; }
84
+ public string Department { get; set; }
84
85
  }
85
86
  }
86
87
  ```

2

AdInfo.csを追記

2018/12/05 00:39

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -12,7 +12,7 @@
12
12
  ユーザーIDを直接指定して、1件だけのデータを表示。
13
13
 
14
14
  AdController.cs
15
- ```ここに言語を入力
15
+ ```C#
16
16
  namespace Web1.Models
17
17
  {
18
18
  public class AdController : Controller
@@ -68,4 +68,19 @@
68
68
  また、このような事をしたい場合、Modelの定義は必要でしょうか?
69
69
  不慣れなので具体的なコードがあると助かります。
70
70
 
71
- よろしくお願いします。
71
+ よろしくお願いします。
72
+
73
+ ---
74
+ ### 追記
75
+ AdInfo.cs
76
+ ```C#
77
+ namespace Web1.Models
78
+ {
79
+ public class AdInfo
80
+ {
81
+ public int Id { get; set; }
82
+ public string Name { get; set; }
83
+ public string Mail { get; set; }
84
+ }
85
+ }
86
+ ```

1

「やりたいこと」に表を追加しました。

2018/12/04 07:54

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -54,8 +54,14 @@
54
54
  ```
55
55
  ### やりたいこと
56
56
  - 検索条件をワイルドカード指定(samAccountName = "ABC12*")
57
- - directorySearcher.FindAll()で複数のデータをViewへ渡す
57
+ - directorySearcher.FindAll()で複数のデータをViewへ渡す(↓View画面のイメージ)
58
58
 
59
+ |cn|name|mail|department|
60
+ |--|--|--|--|
61
+ |ABC121|suzuki|suzuki@jp|営業|
62
+ |ABC122|sato|sato@jp|総務|
63
+ |ABC123|tanaka|tanaka@jp|経理|
64
+
59
65
  ### 質問
60
66
  値が一つの場合は上記のようにFindOneで取得してViewBag変数で渡していましたが、複数だとどのようになるのでしょうか?
61
67
  View側ではforeachで回すのだとは思うのですが、Controller側で取得した値を格納する型がわかりません。