FileExtensions-Attribut von DataAnnotations funktioniert nicht in MVC

8

Ich versuche, eine Datei mit dem HTML FileUpload-Steuerelement in MVC hochzuladen. Ich möchte die Datei validieren, um nur bestimmte Erweiterungen zu akzeptieren. Ich habe versucht, das FileExtensions-Attribut des DataAnnotations-Namespace zu verwenden, aber es funktioniert nicht. Siehe Code unten -

%Vor%

Im Controller schreibe ich den Code wie folgt -

%Vor%

In View habe ich den folgenden Code geschrieben -

%Vor%

Wenn ich die Anwendung ausführe und eine ungültige Dateierweiterung gebe, wird die Fehlermeldung nicht angezeigt. Ich bin mir der Lösung bewusst, ein benutzerdefiniertes Validierungsattribut zu schreiben, aber ich möchte kein benutzerdefiniertes Attribut verwenden. Bitte weisen Sie darauf hin, wo ich falsch liege.

    
DfrDkn 12.07.2015, 09:21
quelle

3 Antworten

5

Ich hatte das gleiche Problem und habe das Erstellen eines neuen ValidationAttribute gelöst.

So:

%Vor%

Benutze jetzt einfach folgendes:

%Vor%

Ich habe geholfen. Umarmungen!

    
Rafael Botelho 05.06.2016 04:02
quelle
2

Das FileExtensions-Attribut weiß nicht, wie eine HttpPostedFileBase überprüft wird. Bitte versuchen Sie es unter

%Vor%

In Ihrem Controller:

%Vor%     
marai 10.11.2015 07:44
quelle
2

Wie Marai geantwortet hat, funktioniert das FileExtension-Attribut nur für String-Eigenschaften.

In meinem Code verwende ich das Attribut wie folgt:

%Vor%

Auf der Serverseite wird ModelState.IsValid dann false sein, wenn die paketierte Datei nicht die Erweiterungen enthält, die Sie im Attribut angeben (.zip und .pdf in meinem Beispiel).

Hinweis: Wenn Sie den Helper HTML.ValidationMessageFor verwenden, um die Fehlermeldung nach PostBack zu rendern (das Dateierweiterungsattribut wird nicht auf Clientseite, nur serverseitig validiert), müssen Sie einen anderen Helper für die Eigenschaft FileName angeben um die Erweiterung Fehlermeldung anzuzeigen:

%Vor%     
Miguel Ramirez 02.03.2017 12:38
quelle