Ich habe eine Situation, in der ich ein Bild hochlade, das der Benutzer aus seinem lokalen Dateisystem ausgewählt hat. Mein Formular hat meiner Ansicht nach grundsätzlich zwei Senden-Schaltflächen. Eine wird verwendet, um das Formular normal zu senden, und alle Überprüfungen werden ausgeführt. Die zweite dient nur zum Hochladen des Bildes. In diesem Fall möchte ich sie noch nicht validieren.
Ich habe es geschafft, die clientseitige Validierung zu deaktivieren, indem ich meiner Senden-Schaltfläche "Bild hochladen" den Klassenwert "Stilname abbrechen" gegeben habe
<input type="submit" name="UploadImageButton" value="Upload Image" class="style-name cancel" />
Wenn ich jetzt zurückschicke, hat mein Modell die Eigenschaft UploadImageButton. Wenn Sie auf diese Schaltfläche klicken, wird diese Eigenschaft ausgefüllt (der Name der Eingabe stimmt mit der Eigenschaft überein). Auf diese Weise weiß ich, ob das Formular über meine wahre Schaltfläche "Senden" oder über den UploadImageButton gesendet wurde.
Meine Frage lautet: Wie kann ich die ServerSide-Validierung deaktivieren? Ich möchte nicht, dass die Informationen zur Validierungszusammenfassung angezeigt werden, wenn der Benutzer auf diese Schaltfläche klickt. Ich weiß, dass Sie damit benutzerdefinierte Modellfehler hinzufügen können
ModelState.AddModelError("{key}", "{error msg}");
Ich suche nach einem Mittel, um Modellfehler zu entfernen. Ist das möglich?
BEARBEITEN:
Folgendes habe ich mir ausgedacht:
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
}
ModelState.ContainsKey(key)
und ModelState.Contains(key)
tun dasselbe, aber mein Punkt ist, dass alle Werte in ModelState.Keys.ToList()
will von Natur aus enthalten sind ModelState
, sodass die gesamte Where
Klausel redundant ist und die Leistung verlangsamt. Kleinigkeit allerdings.
Where(key => ModelState.Keys.Contains(key))
? Es scheint, dass die Where-Klausel redundant ist, da für jeden Schlüssel in ModelState.Keys ModelState.Keys.Contains (Schlüssel) true zurückgibt.