回答編集履歴

2

追記

2018/11/19 04:18

投稿

退会済みユーザー
test CHANGED
@@ -29,3 +29,311 @@
29
29
 
30
30
 
31
31
  聞くのを忘れてましたが、CORE ではないですよね? 上に紹介した記事は .NET Framework ベースです。CORE の場合はかなり違ってくると思います(試したことがないので分かりません)。
32
+
33
+
34
+
35
+ **【追伸2】**
36
+
37
+
38
+
39
+ 下のコメント欄の 2018/11/19 12:40 のコメントで「別途回答欄に追記しておきます。」と書きましたが、それを以下に追記します。
40
+
41
+
42
+
43
+ 今の質問の INSERT する部分のみです。Visual Studio の MVC テンプレートで自動生成されるプロジェクトを使用するのが前提です。
44
+
45
+
46
+
47
+ **(1) Model**
48
+
49
+
50
+
51
+ Models フォルダにモデルを追加してください。no が int 型、project が string 型とすると以下のような感じです。クラス名は任意ですが、それが Controller / View で使用するモデル名になりますので、それを考えて命名してください。
52
+
53
+
54
+
55
+ Display, Required, StringLength 等のデータアノテーション属性は無くても動きますが、ユーザー入力の検証のためには必須なので、とりあえずこの通り付与しておいてください。
56
+
57
+
58
+
59
+ ```
60
+
61
+ using System;
62
+
63
+ using System.Collections.Generic;
64
+
65
+ using System.Linq;
66
+
67
+ using System.Web;
68
+
69
+ using System.ComponentModel.DataAnnotations;
70
+
71
+
72
+
73
+ namespace Mvc5App.Models
74
+
75
+ {
76
+
77
+ public class TestViewModel
78
+
79
+ {
80
+
81
+ [Display(Name = "番号")]
82
+
83
+ [Required(ErrorMessage = "{0} は必須")]
84
+
85
+ public int No { set; get; }
86
+
87
+
88
+
89
+ [Display(Name = "プロジェクト名")]
90
+
91
+ [Required(ErrorMessage = "{0} は必須")]
92
+
93
+ [StringLength(10, ErrorMessage = "{0} は {1} 文字以内")]
94
+
95
+ public string Project { set; get; }
96
+
97
+ }
98
+
99
+ }
100
+
101
+ ```
102
+
103
+
104
+
105
+ **(2) Controller / Action Method**
106
+
107
+
108
+
109
+ 普通はソリューションエクスプローラーで Controllers フォルダを右クリックしてスキャフォールディング機能を利用して作るのですが、今回は簡略化して既存の HomeController.cs に Create アクションメソッドを追加します。
110
+
111
+
112
+
113
+ 以下のような感じです。コメントの「// INSERT 処理」の部分に Oracle にデータを INSERT するコードを入れてください。
114
+
115
+
116
+
117
+ ```
118
+
119
+ using System;
120
+
121
+ using System.Collections.Generic;
122
+
123
+ using System.Linq;
124
+
125
+ using System.Web;
126
+
127
+ using System.Web.Mvc;
128
+
129
+ using System.ComponentModel.DataAnnotations;
130
+
131
+ using Mvc5App.Models;
132
+
133
+
134
+
135
+ namespace Mvc5App.Controllers
136
+
137
+ {
138
+
139
+ public class HomeController : Controller
140
+
141
+ {
142
+
143
+ public ActionResult Index()
144
+
145
+ {
146
+
147
+ return View();
148
+
149
+ }
150
+
151
+
152
+
153
+ // ・・・中略・・・
154
+
155
+
156
+
157
+ public ActionResult Create()
158
+
159
+ {
160
+
161
+ return View();
162
+
163
+ }
164
+
165
+
166
+
167
+ [HttpPost]
168
+
169
+ [ValidateAntiForgeryToken]
170
+
171
+ public ActionResult Create([Bind(Include = "No, Project")] TestViewModel model)
172
+
173
+ {
174
+
175
+ if (ModelState.IsValid)
176
+
177
+ {
178
+
179
+ // INSERT 処理
180
+
181
+ return RedirectToAction("Index");
182
+
183
+ }
184
+
185
+
186
+
187
+ return View(model);
188
+
189
+ }
190
+
191
+
192
+
193
+ }
194
+
195
+ }
196
+
197
+ ```
198
+
199
+
200
+
201
+ **(3) View**
202
+
203
+
204
+
205
+ Visual Studio で、上の Controller のコードのアクションメソッドを右クリックして表示されるメニューに従って View を自動生成させます。Template と Model Class の設定に注意してください。
206
+
207
+
208
+
209
+ ![イメージ説明](d067d75bdf575b59c1d893206c8bc2d7.jpeg)
210
+
211
+
212
+
213
+ [Add]ボタンをクリックすると以下の View のコードが自動生成されます。
214
+
215
+
216
+
217
+ ```
218
+
219
+ @model Mvc5App.Models.TestViewModel
220
+
221
+
222
+
223
+ @{
224
+
225
+ ViewBag.Title = "Create";
226
+
227
+ Layout = "~/Views/Shared/_Layout.cshtml";
228
+
229
+ }
230
+
231
+
232
+
233
+ <h2>Create</h2>
234
+
235
+
236
+
237
+
238
+
239
+ @using (Html.BeginForm())
240
+
241
+ {
242
+
243
+ @Html.AntiForgeryToken()
244
+
245
+
246
+
247
+ <div class="form-horizontal">
248
+
249
+ <h4>TestViewModel</h4>
250
+
251
+ <hr />
252
+
253
+ @Html.ValidationSummary(true, "", new { @class = "text-danger" })
254
+
255
+ <div class="form-group">
256
+
257
+ @Html.LabelFor(model => model.No, htmlAttributes: new { @class = "control-label col-md-2" })
258
+
259
+ <div class="col-md-10">
260
+
261
+ @Html.EditorFor(model => model.No, new { htmlAttributes = new { @class = "form-control" } })
262
+
263
+ @Html.ValidationMessageFor(model => model.No, "", new { @class = "text-danger" })
264
+
265
+ </div>
266
+
267
+ </div>
268
+
269
+
270
+
271
+ <div class="form-group">
272
+
273
+ @Html.LabelFor(model => model.Project, htmlAttributes: new { @class = "control-label col-md-2" })
274
+
275
+ <div class="col-md-10">
276
+
277
+ @Html.EditorFor(model => model.Project, new { htmlAttributes = new { @class = "form-control" } })
278
+
279
+ @Html.ValidationMessageFor(model => model.Project, "", new { @class = "text-danger" })
280
+
281
+ </div>
282
+
283
+ </div>
284
+
285
+
286
+
287
+ <div class="form-group">
288
+
289
+ <div class="col-md-offset-2 col-md-10">
290
+
291
+ <input type="submit" value="Create" class="btn btn-default" />
292
+
293
+ </div>
294
+
295
+ </div>
296
+
297
+ </div>
298
+
299
+ }
300
+
301
+
302
+
303
+ <div>
304
+
305
+ @Html.ActionLink("Back to List", "Index")
306
+
307
+ </div>
308
+
309
+
310
+
311
+ @section Scripts {
312
+
313
+ @Scripts.Render("~/bundles/jqueryval")
314
+
315
+ }
316
+
317
+ ```
318
+
319
+
320
+
321
+ **(4) 実行結果**
322
+
323
+
324
+
325
+ 実行するとブラウザには以下のように表示されるはずです。
326
+
327
+
328
+
329
+ ![イメージ説明](e35848f700f2cf3dd279464829d86d4a.jpeg)
330
+
331
+
332
+
333
+
334
+
335
+ テキストボックスに適用な値を入力して[Create]ボタンをクリックすると、以下の画像(Visual Studio のデバッグ画面)の通り model にブラウザから送信された値が取得できています。
336
+
337
+
338
+
339
+ ![イメージ説明](256c0f65fe87b32fb7e5cbcd23b1ee96.jpeg)

1

追記

2018/11/19 04:18

投稿

退会済みユーザー
test CHANGED
@@ -21,3 +21,11 @@
21
21
 
22
22
 
23
23
  もし、そこまでやる時間が無くて、今の質問の INSERT する部分だけで良いから方法を知りたいということでしたら、その旨連絡ください。
24
+
25
+
26
+
27
+ **【追伸】**
28
+
29
+
30
+
31
+ 聞くのを忘れてましたが、CORE ではないですよね? 上に紹介した記事は .NET Framework ベースです。CORE の場合はかなり違ってくると思います(試したことがないので分かりません)。