Come rimanere a secco quando la logica ha bisogno di un C # e implementazione JavaScript?

StackOverflow https://stackoverflow.com/questions/586818

  •  06-09-2019
  •  | 
  •  

Domanda

Attualmente sto usando la RC1 ASP.NT MVC per implementare un'applicazione di base scheda attività. Mi piacerebbe seguire i principi secco ma trovando difficile in un caso particolare:

Uno dei miei punti di vista, una vista parziale in realtà, ha un certo numero di caselle di testo che rappresentano il numero di ore trascorse su un compito particolare, una casella di testo per ogni giorno della settimana. Quando ho inizialmente carica la pagina, voglio una casella di testo nella vista per visualizzare il totale di tutte quelle ore. Inoltre, voglio che il totale per l'aggiornamento, come posso cambiare 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 l'ActionResult ritorno è un EmptyResult come non c'è niente che ho bisogno di aggiornare il UI).

Attualmente ho il controller creare una vista che viene popolato con il "totale" per quella vista, così la logica che aggiunge tutti i valori è nel controller C #. Dal punto di vista dell'interfaccia utente, ho javascript che aggiorna il totale a livello di interfaccia utente. Ma questo non è un bene perché se cambio la logica dietro come quel totale viene calcolato, devo cambiare in due punti! AHH! Non asciugare!

Quindi, come posso fare questo? L'unica risposta che mi viene finora è quello di scartare il codice javascript che calcola il totale sulla UI e invece hanno il postback AJAX restituire il nuovo "totale" per quella vista.

Ci sono altri approcci?

È stato utile?

Soluzione

Avere la logica per un totale il tempo sia in C # e Javascript non è asciutto in senso stretto, questo è vero. Si potrebbe spaccare il capello per il fatto che si tratta di due lingue diverse che operano in due ambienti separati, ma alla fine della giornata, se si cambia quello che si deve cambiare entrambi.

Credo che sia un compromesso tra forma e funzione. Quanto è importante avere il javascript? Se la chiamata AJAX è semplicemente troppo lento (una possibilità reale), allora questo può essere il tempo di rendersi conto che il principio DRY è un principio guida, non una legge.

Altri suggerimenti

Si potrebbe provare a di Nikhil Kothari Script # progetto . Si tratta di un cross-compilatore che compila e traduce da C # al browser javascript indipendente, che ti permette di condividere la logica. La sua utilizzato da molti gruppi all'interno di Microsoft proprio per questo scopo.

Più, dal sito web:

  

Script # porta la produttività per lo sviluppo Ajax e JavaScript.   Script # è uno strumento gratuito che consente agli sviluppatori all'autore C fonte #   il codice e successivamente compilarlo in sceneggiatura regolare che funziona attraverso   tutti i browser moderni, e così facendo, sfruttare la produttività e la   potenza di strumenti .NET esistenti, nonché l'IDE di Visual Studio. script #   si autorizza con una metodologia di sviluppo e l'approccio che porta   ingegneria del software, manutenzione a lungo termine e scalabile   approcci allo sviluppo per le applicazioni Ajax, componenti e   quadri.

     

Script # è ampiamente utilizzato dagli sviluppatori all'interno dell'edificio Microsoft   esperienze Ajax in Windows Live, Office per citarne solo un paio, come   oltre che da uno sviluppatori esterni e aziende, tra cui Facebook. Se   si sta costruendo applicazioni RIA basate su Ajax, lo dovete a voi stessi di   provare Script # oggi e vedere se può aiutare a migliorare il proprio Ajax   sviluppo!

Se si desidera codice da eseguire su entrambi, il server e il client, è possibile utilizzare / scrivere un albero di espressione al compilatore JavaScript.

Sul lato server, a valutare l'espressione e inviare la stessa espressione tradotta in Javascript al cliente.

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