質問編集履歴

1

詳細を追記

2019/11/23 08:18

投稿

firstbiz
firstbiz

スコア60

test CHANGED
File without changes
test CHANGED
@@ -28,4 +28,130 @@
28
28
 
29
29
 
30
30
 
31
+ =詳細===
32
+
33
+
34
+
35
+ ■データベースについて
36
+
37
+ コースという親テーブルと、カリキュラムという子テーブルがあったとします。
38
+
39
+ ・コース
40
+
41
+  コースID
42
+
43
+  コース名
44
+
45
+
46
+
47
+ ・カリキュラム
48
+
49
+  カリキュラムID
50
+
51
+  コースID
52
+
53
+  カリキュラム名
54
+
55
+
56
+
57
+
58
+
59
+ ■モデルについて
60
+
61
+ コースとカリキュラムはナビゲーションプロパティを記述することで、コースIDを外部キーとして関連をもたせています。
62
+
63
+
64
+
65
+ ・コースモデル
66
+
67
+ public virtual List<Curriculum> Curriculums { get; set; }
68
+
69
+
70
+
71
+ ・カリキュラム
72
+
73
+ public virtual Course Course { get; set; }
74
+
75
+
76
+
77
+
78
+
79
+ ■コントローラーについて
80
+
81
+ ある特定のコースとそれに紐付いているカリキュラム一覧画面のActionResultを以下のように作成しています。
82
+
83
+ public IActionResult Index(int? id)
84
+
85
+ {
86
+
87
+ Course course = _context.Course.
88
+
89
+ Include(c => c.Curriculums .
90
+
91
+ AsNoTracking().
92
+
93
+ Where(item => item.CourseID == id).FirstOrDefault();
94
+
95
+ return View(course);
96
+
97
+ }
98
+
99
+
100
+
101
+ 上記の記述でcourseには、紐付いている複数のカリキュラムが取得できています。
102
+
103
+
104
+
105
+
106
+
107
+ ■ビューについて
108
+
109
+ <Div>
110
+
111
+ <h1>コース詳細</h1>
112
+
113
+ <label>@Html.LabelFor(model => model.CourseID)</label>
114
+
115
+ @Html.TextBoxFor(model => model.CourseID)
116
+
117
+ <span asp-validation-for="CourseID" class="text-danger"></span>
118
+
119
+ </Div>
120
+
121
+
122
+
123
+ <h1>カリキュラム一覧</h1>
124
+
125
+ @for (int idx = 0; idx < Model.Curriculums.Count; idx++){
126
+
127
+ <label class="col-1 col-form-label text-right">郵便番号</label>
128
+
129
+ <input type="text" asp-for="@Model.Curriculums[idx].CurriculumsName">
130
+
131
+ <span asp-validation-for="Curriculums[idx].CurriculumName" class="text-danger"></span>
132
+
133
+ }
134
+
135
+
136
+
137
+ ここまでは理解できており正常な表示が確認できています。
138
+
139
+
140
+
141
+ この下に「追加」ボタンを配置し、クリックするとカリキュラムを1つ追加させたいのです。
142
+
143
+ 既存のカリキュラムの更新と同じく、入力検証も行いたいのです。
144
+
145
+
146
+
147
+ Javascriptによってクライアントサイドで動的に入力欄を追加する方法を検討しておりました。
148
+
149
+
150
+
151
+
152
+
153
+ 難しいようなので、(たとえば)10件などあらかじめ非表示でHTMLだけ記述しておき、追加ボタンでそのうち1件を表示に切り替えることで、擬似的な追加を実現しようと思っていますが、それくらいしかなさそうでしょうか。
154
+
155
+
156
+
31
157
  よろしくお願いいたします。