13 messaggi dal 01 agosto 2006
Buongiorno, gentilmente potreste indicarmi quale sia la tecnica migliore per riutilizzare tutto un blocco view, controller e model considerando che la struttura dei dati da memorizzare è identica ad eccezione della tipologia. Il controller prevede una ventina di funzioni e la view è altrettanto strutturata. Contestualmente dovrei essere in grado di differenziare l'accesso alle funzioni per tipologia in base al ruolo utente.
Grazie.
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,
per "riutilizzare" intendi che l'applicazione deve essere usata da vari clienti, ciascuno con un proprio database?

Oppure intendi dire che hai vari tipi di entità simili le une alle altre (stesse proprietà) che vuoi persistere in tabelle diverse?
Non sarebbe possibile persisterle tutte in un'unica tabella ed usare un campo come discriminatore del tipo?

Per autorizzare l'accesso puoi usare un attributo Authorize personalizzato che tenga conto anche della tipologia richiesta via URL. In questo script di Marco De Sanctis puoi vedere un esempio di come crearlo. Ovviamente la logica implementativa nel tuo caso sarà diversa.
http://www.aspitalia.com/script/1150/Gestire-Autorizzazioni-Livello-Risorsa-ASP.NET-MVC.aspx
ciao,
Moreno
Modificato da BrightSoul il 10 marzo 2016 22.42 -

Enjoy learning and just keep making
13 messaggi dal 01 agosto 2006
Ciao Moreno,
grazie per la risposta... per riutilizzo intendo proprio la persistenza di entità simili che differiscono per un campo tipologia e quindi evitare di scrivere codice ridondante.
Se ho capito bene mi stai suggerendo di inserire il tipo entità nell'url per pilotare tutta la logica e quindi predisporre una regola di routing basata sul template {controller}/{action}/{type}/{id} così da differenziare l'accesso direttamente dal menu piuttosto che selezionare il tipo direttamente sulla form.
Grazie.
stefano
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao Stefano,
esatto, sì, il mio consiglio iniziale era proprio di mettere il tipo di entità nell'url.
In questo modo potrai autorizzare (o negare) l'accesso all'utente più facilmente anche nelle pagine di elenco, dove tipicamente non hai il form di modifica dati da cui selezionare il tipo di entità.

Ovviamente si può fare anche in altri modi e quindi scrivi pure se questa soluzione non ti convince in pieno.

ciao,
Moreno

Enjoy learning and just keep making
13 messaggi dal 01 agosto 2006
Ciao Moreno,
grazie per il tuo suggerimento che mi ha permesso di riutilizzare tutto il codice con poche modifiche.
Nel tuo precedente intervento hai parlato di altre modalità di riutilizzo del codice: al di là dell'utilizzo di pagine parziali è troppo chiederti di indicarne brevemente un'altra.
Ti ringrazio.
stefano
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao Stefano,
per esempio si potrebbero predisporre tanti controller, uno per tipo di entità, che derivano magari da uno stesso controller base che contiene la logica di visualizzazione dell'elenco e di salvataggio delle modifiche.
Questo avrebbe il vantaggio di rendere più evidenti i tipi di entità che esistono nella tua applicazione, dato che ognuno ha un proprio controller.

Però dipende dallo stile che ti piace usare.

ciao,
Moreno

Enjoy learning and just keep making

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.