
◇環境
OS:Windows10
IDE:VisualStudio2015
framework:.NET Framework 4.6.1
◇実現したい事
以下のModelの様に検証を実装している場合について
下記、検索処理(Kensaku)のコード中の
「リストデータの検証は不要」の箇所においては
Rows要素の入力検証を無効としたいと考えております。
Model
1Public Class Page1 2 <CustomValidation(GetType(Page1), "SearchRequired")> 3 Public Property InDate As Date? 4 5 Public Property Rows As New List(Of Page1.Row) 6 7 Public Property RowData As Row 8 9 Public Class Row 10 <RegularExpression("NG", ErrorMessage:="NGはNG")> 11 Public Property ITEM1 As String 12 13 <RegularExpression("NG", ErrorMessage:="NGはNG")> 14 Public Property ITEM2 As String 15 16 End Class 17 18 Public Shared Function SearchRequired(m As String, context As ValidationContext) As ValidationResult 19 Dim kensaku = CType(context.ObjectInstance, Page1) 20 21 If Not kensaku.InDate Then 22 Return New ValidationResult(String.Format(”{0}は必須です”, "日付")) 23 End If 24 25 Return ValidationResult.Success 26 27 End Function 28 29End Class
Kensaku
1 <HttpPost()> 2 <ValidateAntiForgeryToken> 3 Function Index(model As Page1) As ActionResult 4 5 'リストデータの検証は不要(以下が動作しない) 6 'ModelState("Rows").Errors.Clear() 7 8 ' 入力チェック 9 If Not ModelState().IsValid Then 10 Return View("Index", model) 11 End If 12 13 ModelState.Clear() 14 15 ' 検索処理を呼び出し 16 Search(model) 17 18 Return RedirectToAction("Index", "Page1") 19 20 End Function
◇試したこと
●動作する例
ModelState("InDate").Error.Clear
→この場合、InDateの検証エラーはクリアできておりました。
●NGの例
ModelState("Rows").Error.Clear
ModelState("Rows*").Error.Clear
→エラーとなりました。
◇質問
ブレークポイントを作りModelStateのKey値を見ると
Rows[0].ITEM1
Rows[0].ITEM2
Rows[1].ITEM1
Rows[1].ITEM2
・
・
と続いていたので一つずつエラーをクリアする必要があると考えております。
今回の場合、どのように指定すれば
Rows[0].ITEM1 以下の全ての検証エラーをクリアできるのか
お教えいただきたく存じます。
よろしくお願いいたします。






