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

質問編集履歴

2

解決方法の追加

2020/09/18 07:05

投稿

syugaaburesu
syugaaburesu

スコア35

title CHANGED
File without changes
body CHANGED
@@ -150,4 +150,41 @@
150
150
 
151
151
  vmware14 windows10
152
152
  asp.net WebApplication mvc
153
- VisualStudio2015
153
+ VisualStudio2015
154
+
155
+
156
+ ### 解決方法 modelにDataAnnotationsを追加する
157
+ ```C#
158
+ using System;
159
+ using System.Collections.Generic;
160
+ using System.ComponentModel.DataAnnotations;
161
+ using System.ComponentModel;
162
+
163
+ namespace ProductManage.Models
164
+ {
165
+ public class Insert
166
+ {
167
+ [Required(ErrorMessage = "商品名は必須入力です")]
168
+ [StringLength(16, ErrorMessage = "16文字以内で入力してください")]
169
+ public string productName { get; set; }
170
+
171
+ [Range(1, 3, ErrorMessage = "オプションは入力必須です")]
172
+ public int option { get; set; }
173
+
174
+ [RegularExpression(@"[0-9]+", ErrorMessage = "半角数字のみ入力できます")]
175
+ public int price { get; set; }
176
+ }
177
+ }
178
+ ```
179
+ 対象のcontrollerで下記を追加
180
+ ```C#
181
+ if (ModelState.IsValid)
182
+ {
183
+ //ここに正常時のコードを記載
184
+ }
185
+ ```
186
+ HTMLで
187
+ ```HTML
188
+ @Html.ValidationMessageFor(model => model.productName)
189
+ ```
190
+ を追加して無事表示されるようになりました。

1

試したことの追記

2020/09/18 07:05

投稿

syugaaburesu
syugaaburesu

スコア35

title CHANGED
File without changes
body CHANGED
@@ -130,8 +130,18 @@
130
130
  ```
131
131
 
132
132
  ### 試したこと
133
+ @using(html.beginform)ではなくhtmlのformで対処する
134
+
135
+ 入力チェックは行われたがcontroller側が反応しなかった恐らく
136
+ [HttpGet]
137
+ public ActionResult add()
138
+ {
139
+ return View();
140
+ }
141
+ の方に行ってしまっていると考えています。
142
+ 根拠としては足りないですがブレイクポイントを上記コードの下の本来行くはずの所につけて反応しなかったからです。
133
143
 
134
- 出来そうな手段を考えて検索しましたが該当するものが見つかりませんでした。
144
+ 上記以外で出来そうな手段を考えて検索しましたが該当するものが見つかりませんでした。
135
145
  考えた手段として
136
146
  ・controller側でjavascriptの関数を呼び出せるのではないか
137
147
  ・Ajax通信等の手段を使って行えないか