Ich habe 2 Szenarien, die ich brauche Hilfe mit Re-Validierung in meiner ASP.NET MVC-Anwendung. Ich bin mir bewusst, dass die Validierung innerhalb des Controllers nicht ideal ist, also versuche ich es anderswo zu halten - vielleicht mit meinen Modellen, wo ich kann.ASP.NET MVC Validierung
1) Ich habe ein Modell mit verschiedenen Eigenschaften, von denen einige Validierung haben gegen sie DataAnnotations verwenden. Ich benutze dann die HTML-Hilfsmethoden in meiner Ansicht, um alle Validierungsfehler mit den relevanten Feldern anzuzeigen. In den meisten Fällen funktionieren diese wie erwartet. Die Ausnahme, auf die ich gestoßen bin, ist, wo eines der Felder meiner Ansicht eine Dropdown-Liste ist. Der erste Eintrag in meiner Liste ist leer/leer, der Rest sind echte Werte. Das Anwesen in meinem Modell, das dieses Feld bezieht sich die folgende gegen sie hat:
[Required(ErrorMessage = "A value from the list is required")]
Derzeit, wenn ich den Standardwert in der Liste (leer) verlassen und keinen echten Wert aus der Liste auswählen, Ich möchte, dass es die Validierungsfehlermeldung rendert, aber es behandelt es gerade, als ob es ein gültiger Wert wäre, und übergibt diese Validierung.
Wie kann ich es Validierung fehl, wenn die leer/leer Listenelement vorgelegt wird?
2) Auf einen meiner Ansichten, ich habe ein paar Datei-Upload-Steuerelemente, den Benutzer ermöglicht, Bilder auf die Website zu. Diese Felder sind nicht direkt an irgendwelche Eigenschaften in meinem Modell gebunden - nur die resultierenden Dateinamen (nachdem die Datei hochgeladen, konvertiert, umbenannt usw. wurde) werden dann den Eigenschaften 'Dateiname1', 'Dateiname2' usw. in meinem Modell zugewiesen.
Also, ich frage mich, wie man am besten über die diese obligatorische Datei-Uploads Validierung gehen? Derzeit mache ich folgendes für jeden des Datei-Upload-Steuerelemente in meinem Controller (!):
HttpPostedFileBase file = null;
file = Request.Files["Filename1"];
if (file != null && file.ContentLength == 0)
ModelState.AddModelError("Filename1", "Image1 is required");
Sobald dies für jede der Datei-Upload-Kontrollen durchgeführt wird, ich überprüfen, ob das Model gültig ist:
Ich bin sicher, dass es eine bessere Möglichkeit geben muss, diese Validierung durchzuführen, und ich könnte mir vorstellen, dass es nicht ideal ist, dies in der Steuerung zu haben, aber ich bin mir nicht sicher, der beste Weg, damit umzugehen.
Ich würde jede Hilfe mit diesen 2 Szenarien schätzen.