質問編集履歴
6
AdInfo.cs の Id の型を修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -78,7 +78,7 @@
|
|
78
78
|
{
|
79
79
|
public class AdInfo
|
80
80
|
{
|
81
|
-
public
|
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 内修正
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>
|
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
|
-
|
126
|
+
var name = (string)user.Properties["name"].Value;
|
118
|
-
|
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(
|
133
|
+
return View(model);
|
122
134
|
}
|
123
135
|
}
|
124
136
|
}
|
4
UserList()の追加
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の編集
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を追記
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
「やりたいこと」に表を追加しました。
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側で取得した値を格納する型がわかりません。
|