ASP.NET MVC 3: DataAnnotations.FileExtensionsAttribute funktioniert nicht

8

Laut der MSDN-Dokumentation sollte das FileExtensionsAttribute (.NET 4.5) standardmäßig nur JPG-, JPEG-, GIF- und PNG-Dateien hochladen können - was ich möchte.

Ich habe versucht, ein JPG ohne das Attribut hochzuladen, es funktioniert. Groß. Dann Ich habe das Attribut zu meinem Ansichtsmodell hinzugefügt.

%Vor%

Keine Freude. Die Überprüfung schlägt fehl und die ErrorMessage wird angezeigt. Darüber hinaus scheint es keine Möglichkeit zu geben, zulässige benutzerdefinierte Dateierweiterungen anzugeben. Ich habe schließlich das FileExtensionsAttribute erweitert und meine eigene Verifikationslogik verwendet, die wie erwartet funktioniert. Aber warum funktioniert dieser Weg nicht?

Wird den gesamten Controller veröffentlichen und bei Bedarf anzeigen. Ich habe dieses Beispiel als Grundlage für die Upload-Logik verwendet, aber das DataAnnotations.FileExtensionsAttribute anstelle von Microsoft.Web.Mvc.FileExtensions verwendet ..

Greig Stewart 16.12.2011, 15:48
quelle

4 Antworten

5

Verwenden Sie die Erweiterungen Eigenschaft, um sie festzulegen. Obwohl laut der Dokumentation

  

Die Dateinamenerweiterungen oder die Standard-Dateierweiterungen (".png",   ".jpg", ".jpeg" und ".gif"), wenn die Eigenschaft nicht festgelegt ist.

Sie können es so einstellen, wie Sie das ErrorMessage getan haben. Das wahrscheinlichere Problem ist, dass es nicht weiß, wie man beurteilen kann, ob HttpPostedFileBase die richtige Erweiterung hat. Sie müssen das aus dem MVC-Framework verwenden oder ein eigenes erstellen.

    
Yuriy Faktorovich 16.12.2011, 15:55
quelle
24

Da System.ComponentModel.DataAnnotations.FileExtensionsAttribute versiegelt ist. Ich benutze einen Wrapper für MVC 4.

%Vor%     
jfeinour 30.11.2012 18:09
quelle
1

Ich weiß, das ist ein bisschen zu spät, aber vielleicht kann das jemandem da draußen helfen. Dies ist eine modifizierte Version von @jfeinour, die auch auf der Client-Seite funktionieren wird:

%Vor%     
Dimitar Dimitrov 04.09.2014 15:20
quelle
0

Das FileExtensionsAttribute weiß nicht, wie man eine HttpPostedFileBase verifiziert, also habe ich es erweitert.

%Vor%

Beachten Sie, dass diese Methode die Datei dazu zwingt, ein erforderliches Feld zu sein. Wenn es sich um ein optionales Feld handelt, verwenden Sie alternativ den folgenden Code für den Methodenkörper. Dies führt immer zum Erfolg, wenn keine Datei angegeben wurde (in den meisten Fällen wahrscheinlich korrekter).

%Vor%     
Greig Stewart 19.12.2011 09:53
quelle

Tags und Links