È stato utile?

Soluzione

Dopo aver rimosso gli elementi offensivi, cancella ModelState e convalida di nuovo, in questo modo:

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

Nota : fai attenzione quando usi il metodo TryValidateModel perché questo metodo non convalida l'oggetto nidificato del modello (come menzionato da @Merenzo).

Altri suggerimenti

In ritardo al gioco, ma ancora: Stavo anche cercando un modo per convalidare il modello dopo aver apportato alcune modifiche (più precisamente - agli elementi della sua raccolta nidificata) - e TryValidateModel non ha funzionato per me, in quanto non funzionaelaborare oggetti annidati.

Infine, ho deciso con il raccoglitore di modelli personalizzato:

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);
    }
}

sulla classe del modello:

[ModelBinder(typeof(MyItemModelBinder))]
public class MyItemModel : IValidatableObject
{
    //...
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top