Attualmente sto utilizzando ASP.NT MVC RC1 per implementare un'applicazione di timesheet di base. Mi piacerebbe seguire i principi di ASCIUTTO ma trovarlo difficile in un caso particolare:Come rimanere DRY quando la logica ha bisogno di un'implementazione C# e Javascript?
Uno dei miei punti di vista, in realtà una vista parziale, ha un numero di caselle di testo che rappresentano il numero di ore trascorse su una determinata attività, una casella di testo al giorno della settimana. Quando inizialmente carico la pagina, voglio una casella di testo nella vista per visualizzare il totale di tutte quelle ore. Inoltre, voglio che quel totale si aggiorni mentre cambio i valori nelle caselle di testo. L'aggiornamento alle caselle di testo non causa un postback completo, solo un postback AJAX che non fa nulla con i risultati (il postback aggiorna il valore sul DB ma il ritorno ActionResult è un EmptyResult in quanto non c'è nulla che devo aggiornare sul UI).
Attualmente il controller crea una vista popolata con il "totale" per quella vista, quindi la logica che aggiunge tutti i valori è nel controller C#. Dal lato dell'interfaccia utente, ho javascript che aggiorna il totale sul livello dell'interfaccia utente. Ma questo non va bene perché se cambio la logica alla base del calcolo del totale, devo cambiarlo in due punti! AHH! NON ASCIUTTO!
Quindi, come posso fare questo? L'unica risposta che mi viene in mente è quella di eliminare il codice javascript che calcola il totale sull'interfaccia utente e invece il postback AJAX restituire il nuovo "totale" per quella vista.
Ci sono altri approcci?
È * un * principio guida, non una legge. Se hai bisogno della logica in entrambi i casi, e non è tecnicamente fattibile condividere la stessa implementazione, dovrai implementarla due volte. Buona fortuna, questa è la vita. ;) – jalf
@jalf: esattamente. Una (qualsiasi) linea guida non è una legge di esistenza indissolubile. – Richard
OK, annotato e modificato;) –