Frage

Ich habe ein SearchViewModel mit diesen Eigenschaften:

    [RegularExpression("name")]
    public String SortField;

    [RegularExpression("asc|desc")]
    public String SortDirection;

Wie Sie sehen können, möchte ich, dass "Name" zu diesem Zeitpunkt der einzige gültige Wert von Sortfield ist, und "ASC" oder "Desc" die einzigen gültigen Werte für die SortDirection.

Validatemodel fängt jedoch keinen Fehler auf, wenn die Werte unterschiedlich sind, und modelState.isvalid gibt true zurück. Grundsätzlich kann ich jeden Wert liefern und er wird immer durchgehen.

Die abgekürzte Controller -Methode:

    public ActionResult List(SearchViewModel model)
    {            
        ValidateModel(model); // No error here
        Boolean isValid = ModelState.IsValid // This is true

        //...
    }

Was mache ich falsch?

Bearbeiten: Ich bin mir nicht sicher, ob dies wichtig ist, aber ich verwende einen benutzerdefinierten Modellbinder.

War es hilfreich?

Lösung

Das sind keine Eigenschaften; Sie sind Felder. Bindung und Validierung nur gegen Eigenschaften arbeiten.

Zu Ihrer Information - [RegularExpression] Ermöglicht dem Benutzer auch, keinen Wert für die Eingabe anzugeben (die in ein Null konvertiert wird). Wenn Sie Nullwerte nicht zulassen möchten, verwenden Sie [Required] zusätzlich zu [RegularExpression].

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top