Ho un progetto MVC asp core per un college e vorrei implementare una funzione di programmazione oraria.
Per vedere se riuscivo a generare con successo anche un orario HTML dinamico, ho iniziato a giocare in un'app console separata. Naturalmente, più giocavo, più classi ho aggiunto, e più complessi sono diventati i metodi di generazione HTML, così che le opzioni potevano essere passate per specificare lunghezze di giorno e periodo, giorni di rendering in cima o di lato, aggiungere classi CSS ecc. .
Quindi ora, piuttosto che copiare e incollare tutto quel codice da un progetto e nel livello MVC dell'altro, ho pensato che sarebbe stato bello se potessi semplicemente fare riferimento al progetto dell'orario e usare le classi e i metodi nelle mie asp viste attraverso quello. Ciò, in teoria, permetterebbe anche a me di usare il calendario in tutti gli altri progetti simili che potrebbero arrivare.
Il problema principale che sto meditando è dove dovrei mettere le mie enumerazioni e le mie interfacce?
Ad esempio, per consentire implementazioni alternative su come eseguire il rendering di un determinato "elemento" dell'orario (ad esempio una classe con il suo insegnante e la sua stanza) ho pensato di utilizzare un'interfaccia. Pertanto, Timetable
accetta un elenco di ITimetableItem
che è responsabile del rendering di un <div>
, dell'impostazione di colspan
e di altre celle pertinenti '% da% a display
. Ho iniziato a definire le interfacce nel livello di dominio della mia app ASP, ma già sto trovando che ho bisogno di un enum che è richiesto per un metodo none
che viene chiamato da TimeTableItem
durante la generazione dell'HTML.
Ora, sicuramente non avrebbe senso copiare l'enum nel Dominio e farlo esistere in entrambi? Ma anche io non voglio fare riferimento al progetto Orario dal livello Dominio. Questo mi porta a pensare che tutte le interfacce e le enumerazioni dovrebbero vivere nel progetto Timetable, e la mia UI dovrebbe fare riferimento al progetto di orario e implementare le sue interfacce? Questa è una conclusione ragionevole?
E infine (scusate per l'enorme post!) il Timetable
s utilizza classi come TimetableItem
e Teacher
. Ora nell'app della console li ho appena costruiti al volo, ovviamente, ma nel progetto principale esistono e sono molto più complessi di quanto non sia necessario per visualizzare semplicemente un calendario. La soluzione sarebbe anche un'interfaccia? È normale avere interfacce per quelle che sembrano quasi tutte le classi di cui ho bisogno nell'orario? E poi avrei bisogno di speciali classi Room
per tutte le suddette classi ( TimeTableViewModel
ecc.) Che implementano tali interfacce, giusto?