War es hilfreich?

Lösung

Wenn Sie die fehlerhaften Elemente entfernt haben, löschen Sie den ModelState und validieren Sie ihn erneut wie folgt:

ModelState.Clear();
TryValidateModel(crew);  // assumes the model being passed is named "crew"

Hinweis : Seien Sie vorsichtig, wenn Sie die TryValidateModel-Methode verwenden, da diese Methode das verschachtelte Objekt des Modells nicht validiert (wie von @Merenzo erwähnt).

Andere Tipps

Spät zum Spiel, aber trotzdem: Ich suchte auch nach einer Möglichkeit, das Modell zu validieren, nachdem einige Änderungen daran vorgenommen wurden (genauer gesagt - an den Elementen seiner verschachtelten Sammlung) - und TryValidateModel funktionierte bei mir nicht, da dies nicht der Fall istverschachtelte Objekte verarbeiten.

Schließlich habe ich mich für einen benutzerdefinierten Modellordner entschieden:

public class MyItemModelBinder : DefaultModelBinder
{
    protected override void OnModelUpdated(
        ControllerContext controllerContext, 
        ModelBindingContext bindingContext)
    {
        if (bindingContext.ModelType == typeof(MyItemModel))
        {
            MyItemModel item = (MyItemModel)bindingContext.Model;
            //do required tweaks on model here 
            //(I needed to load some additional data from DB)
        }
        //validation code will be called here, in OnModelUpdated implementation
        base.OnModelUpdated(controllerContext, bindingContext);
    }
}

für die Modellklasse:

[ModelBinder(typeof(MyItemModelBinder))]
public class MyItemModel : IValidatableObject
{
    //...
}

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