Domanda

Sto cercando un approccio best practice su come fare la convalida UI in un'architettura model-view-presentatore.

Ho bisogno di convalidare alcune forme con un sacco di controlli. E per rendere più facile per l'utente, devo conservare tutti gli errori o avvisi con un riferimento al controllo in un registro che viene visualizzato all'utente in seguito in modo che egli può saltare subito al controllo che deve risolvere. Questo viene fatto nella vista-parte, che in realtà è sbagliato in quanto convalida dovrebbe avvenire nel presentatore per scambiare la vista.

Il problema per me di fare questo convalida il presentatore è che non è solo controllando se i valori forniti sono sbagliato, ha anche bisogno di controllare se radiobuttons sono stati controllati che consente una casella di testo, che deve poi contenere del testo per esempio.

Stavo pensando di utilizzare il BindingSource nella presentatore dal momento che è riflettendo i cambiamenti di interfaccia utente ed è visibile al presentatore. Ma io non sono sicuro se questo è il modo giusto per andare (e penso che sia una specie di brutto)?

A proposito: la convalida non prende sufficiente posizionare prima di scrivere al database; esso avviene già mentre l'utente sta lavorando sulle forme.

Si poteva pensare ad un buon modo di fare questo?

È stato utile?

Soluzione

Abbiamo finalmente trovato una soluzione. Sarà fatto come mi aspettavo, con il DataSet nella presentatore che viene elaborato da diverse classi validator (uno per ciascuna delle nostre "pagine"). La parte più difficile è, quando i controlli dipendono l'uno dall'altro (ma alla fine il suo solo controllare se i valori vengono impostati nel DataSet). Al momento non è possibile saltare al controllo per correggere gli errori, ma questo verrà aggiunto in seguito tramite Riflessione passando il nome del controllo alle LogEntries e la vista può quindi capire dove questo controllo è.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top