ユーザーがローカルファイルシステムから選択した画像をアップロードしている状況があります。私の見解では、私のフォームには基本的に2つの送信ボタンがあります。1つは通常どおりフォームを送信するために使用され、すべての検証が実行されます。2つ目は画像をアップロードするためだけのもので、その場合はまだ検証したくありません。
「画像のアップロード」送信ボタンに「style-namecancel」のクラス値を指定することで、クライアント側の検証をオフにすることができました。
<input type="submit" name="UploadImageButton" value="Upload Image" class="style-name cancel" />
これで、ポストバックすると、モデルにプロパティUploadImageButtonがあり、このボタンをクリックすると、このプロパティにデータが入力されます(入力の名前はプロパティと一致します)。このようにして、フォームが実際の送信ボタンによって送信されたのか、UploadImageButtonによって送信されたのかがわかります。
私の質問はこれです... ServerSide検証をオフにするにはどうすればよいですか?ユーザーがこのボタンをクリックしたときに検証の概要情報が表示されないようにします。これを使用してカスタムモデルエラーを追加できることを知っています
ModelState.AddModelError("{key}", "{error msg}");
モデルエラーを削除する方法を探しています。これは可能ですか?
編集:
これが私が思いついたものです:
foreach (var key in ModelState.Keys.ToList().Where(key => ModelState.ContainsKey(key))) {
//ModelState.Remove(key); //This was my solution before
ModelState[key].Errors.Clear(); //This is my new solution. Thanks bbak
}
Where(key => ModelState.Keys.Contains(key))
?ModelState.Keysの各キーのModelState.Keys.Contains(key)がtrueを返すため、Where句は冗長であるように見えます。