La creazione di viste parziali quasi duplicate è solo per il popolamento di elementi html con ritorni Ajax che violano DRY?

0

Forse anti-pattern è una parola migliore per questa domanda. Non lo so, ma intendo una violazione di ASCIUTTO. Mi piace riutilizzare una vista parziale, e posso, ma quella vista parziale ha altre cose che non voglio nel mio div che sto popolando.

Ad esempio,

Ho una pagina con un nome. Posso navigare in una vista e mi mostra le informazioni su quella persona. Questa è una vista normale.

Ho una pagina diversa che ha bisogno dei dati del nome, e posso chiamare lo stesso controller e tornare alla stessa vista "normale", ma contiene molte cose che non voglio, come un modulo, menu , ecc.

Se non chiami quella Vista che ho già, devo farne un'altra. Se non lo faccio devo eseguire un rendering personalizzato nel mio callback JavaScript e inserirlo nel mio div.

Sto violando DRY? Se avessi tonnellate di queste cose diventerebbe ingombrante, ma non so che altro fare se non viste speciali.

Sto usando ASP.NET Core se questo è importante.

    
posta johnny 19.04.2018 - 22:39
fonte

1 risposta

1

Tecnicamente probabilmente ti stai ripetendo.

Ma a un certo punto devi decidere se è più difficile creare una nuova versione generica di qualcosa che soddisfi due o più scopi, o creare due versioni della stessa cosa.

Quando si parla di visualizzazioni HTML, penso che la maggior parte di noi opterebbe per quest'ultima. HTML non è così flessibile come il tuo codice lato server, cercando di comprimerlo in due forme con css e javascript finisce per essere hacky a meno che non sia molto semplice.

È possibile minimizzare la duplicazione usando lo stesso modello di vista e la logica del controller (spostandola in un metodo) per entrambi. È sufficiente restituire una vista diversa dello stesso modello di visualizzazione.

Ma esiste una scuola di pensiero che dice, una vista per ogni modello. e nel complesso sono d'accordo. Ma poi tendo ad avere dei modelli di visualizzazione per scari molto leggeri.

Come citi nei commenti, l'altra opzione è quella di andare per più javascript e recuperare i viewmodels dal server. Nel qual caso le "viste" in html verranno spostate sul lato client. Forse offrendoti un controllo migliore, ma penso che ti ritroverebbero con due modelli separati in entrambi i casi.

    
risposta data 19.04.2018 - 23:13
fonte

Leggi altre domande sui tag