回答編集履歴

1

追記

2017/05/08 07:48

投稿

退会済みユーザー
test CHANGED
@@ -11,3 +11,201 @@
11
11
 
12
12
 
13
13
  多分 (3) しかなさそうな気がします。
14
+
15
+
16
+
17
+ 【追伸】
18
+
19
+
20
+
21
+ 前のスレッド [https://teratail.com/questions/75281](https://teratail.com/questions/75281) に書いてあった質問者さんのコメントの、
22
+
23
+
24
+
25
+ > (3)a要素を自分で組み立てる->DashboardController.csのIndex(string connectionid)にconnectionidが渡らないというのを検証して、途方に暮れていたところです。
26
+
27
+
28
+
29
+ というところですが、質問者さんのコードを見ると controller から view に渡される Model から ConnectionId は取得できているように見えます。
30
+
31
+
32
+
33
+ その想像が当たっていれば、(3) の方法で、例えば以下のような感じで可能なはずです。
34
+
35
+
36
+
37
+ 以下の例で、Customer というのは AdventureWorksLT サンプルデータベースのテーブルで、CustomerID, Title, FirstName, LastName その他のフィールドを持っています。
38
+
39
+
40
+
41
+ controller では、EDM を利用して Customer テーブルのレコードを IEnumerable<AdventureWorksLT.Customer> 型のオブジェクトとして取得し、View に Model として渡します。(Take(10) としているのは、全部取得すると長くなりすぎるからです)
42
+
43
+
44
+
45
+
46
+
47
+ ```
48
+
49
+ using System;
50
+
51
+ using System.Collections.Generic;
52
+
53
+ using System.Linq;
54
+
55
+ using System.Web;
56
+
57
+ using System.Web.Mvc;
58
+
59
+ using AdventureWorksLT;
60
+
61
+
62
+
63
+ namespace Mvc5App.Controllers
64
+
65
+ {
66
+
67
+ public class HomeController : Controller
68
+
69
+ {
70
+
71
+ public ActionResult Index()
72
+
73
+ {
74
+
75
+ AdventureWorksLTEntities db = new AdventureWorksLTEntities();
76
+
77
+ var list = (from c in db.Customer
78
+
79
+ orderby c.CustomerID ascending
80
+
81
+ select c).Take(10);
82
+
83
+
84
+
85
+ return View(list);
86
+
87
+ }
88
+
89
+ }
90
+
91
+ }
92
+
93
+ ```
94
+
95
+
96
+
97
+ View では controller から Model として渡された IEnumerable<AdventureWorksLT.Customer> 型のオブジェクトから、以下のように a 要素の文字列を作って html コードにレンダリングします。(~/Home... のルート演算子 ~ に注意してください。ASP.NET MVC4 以降でないと以下のような書き方はできないので、@Url.Content("~/Home...) と書く必要があります)
98
+
99
+
100
+
101
+ ```
102
+
103
+ @model IEnumerable<AdventureWorksLT.Customer>
104
+
105
+
106
+
107
+ @{
108
+
109
+ ViewBag.Title = "Home Page";
110
+
111
+ }
112
+
113
+
114
+
115
+ <div>
116
+
117
+ <ul>
118
+
119
+ @foreach (var item in Model)
120
+
121
+ {
122
+
123
+ <li>
124
+
125
+ <a href="~/Home/Index?connectionid=@item.CustomerID.ToString()">@String.Format("{0} {1} {2}", item.Title, item.FirstName, item.LastName)</a>
126
+
127
+ </li>
128
+
129
+ }
130
+
131
+ </ul>
132
+
133
+ </div>
134
+
135
+ ```
136
+
137
+ 結果、以下の html ソースになります。RouteConfig.cs で controller = "Home", action = "Index" となっていますが、それの影響はなく、href 属性に /Home/Index が設定されています。
138
+
139
+
140
+
141
+ ```
142
+
143
+ <div>
144
+
145
+ <ul>
146
+
147
+ <li>
148
+
149
+ <a href="/Home/Index?connectionid=1">Mr. Orlando Gee</a>
150
+
151
+ </li>
152
+
153
+ <li>
154
+
155
+ <a href="/Home/Index?connectionid=2">Mr. Keith Harris</a>
156
+
157
+ </li>
158
+
159
+ <li>
160
+
161
+ <a href="/Home/Index?connectionid=3">Ms. Donna Carreras</a>
162
+
163
+ </li>
164
+
165
+ <li>
166
+
167
+ <a href="/Home/Index?connectionid=4">Ms. Janet Gates</a>
168
+
169
+ </li>
170
+
171
+ <li>
172
+
173
+ <a href="/Home/Index?connectionid=5">Mr. Lucy Harrington</a>
174
+
175
+ </li>
176
+
177
+ <li>
178
+
179
+ <a href="/Home/Index?connectionid=6">Ms. Rosmarie Carroll</a>
180
+
181
+ </li>
182
+
183
+ <li>
184
+
185
+ <a href="/Home/Index?connectionid=7">Mr. Dominic Gash</a>
186
+
187
+ </li>
188
+
189
+ <li>
190
+
191
+ <a href="/Home/Index?connectionid=10">Ms. Kathleen Garza</a>
192
+
193
+ </li>
194
+
195
+ <li>
196
+
197
+ <a href="/Home/Index?connectionid=11">Ms. Katherine Harding</a>
198
+
199
+ </li>
200
+
201
+ <li>
202
+
203
+ <a href="/Home/Index?connectionid=12">Mr. Johnny Caprio</a>
204
+
205
+ </li>
206
+
207
+ </ul>
208
+
209
+ </div>
210
+
211
+ ```