Ho un modello di vista & che utilizzo sia per la modifica che per la pagina di inserimento per un record. Uno dei requisiti aziendali è che per la modifica è richiesto un determinato campo ma non un nuovo. In origine prima di questa particolare caratteristica è stato aggiunto al registro degli indagati, ho avuto il modello in questo modo:Convalida condizionale sul modello in MVC
[Required(ErrorMessage = "*")]
[Range(0.0, (double)decimal.MaxValue)]
[DisplayName("Cost")]
[DisplayFormat(DataFormatString = "{0:d}", ApplyFormatInEditMode = true)]
public decimal ProposedCost { get; set; }
Vorrei rimuovere la proprietà necessaria se si tratta di una forma di inserimento, o aggiungerlo se un modulo di modifica. Qual è l'approccio migliore? Tutta la mia altra convalida è fatta come sopra. Oppure posso modificare lo stato del modello? Pensieri?
EDIT
Qualcosa vorrei chiarire è che sono ancora permesso di inserire un costo sul nuovo, solo che non richiesto.
Ho provato a farlo, tuttavia è stato comunque in grado di salvare un record di modifica senza un costo proposto. Ho inserito un punto di interruzione e ho colpito il Validationresult. Pensieri? – Seth
Sei sicuro di aver controllato 'ModelState.IsValid'? Ho aggiornato la risposta per mostrare un esempio. Si noti inoltre che 'ProposedCost' deve essere annullabile se si consente di non impostarlo. – andreister
Sì, mi sono perso, buona presa. Le altre proprietà aggiunte hanno un controllo lato client automaticamente dietro le quinte. Ad ogni modo posso attingere a quello? Questo ovviamente va oltre la portata della mia domanda iniziale. – Seth