Parte di un sistema su cui sto lavorando gestisce alcune informazioni sui titoli (azioni, obbligazioni, ecc ...) e le regole aziendali specificano che alcuni campi devono essere visualizzati solo in tutti i CAPS (simboli di serie e CUSIP ad esempio). Gli utenti dovranno guardare i dati visualizzati sullo schermo e anche creare / modificare le operazioni di immissione dei dati.
Qual è il posto migliore per occuparsene?
1. Solo livello di presentazione
l'utente inserisce "ibm" come simbolo del titolo, memorizzato nel database come "ibm", convertito in maiuscolo quando visualizzato nell'app ("IBM")
2. Converti in CAPS prima di archiviarli in DB
l'utente inserisce "ibm", la classe del modello converte in maiuscolo e invia al database, memorizzato come "IBM"
Qualcosa come un setter personalizzato:
private string _StockSymbol;
public string StockSymbol
{
get { return _StockSymbol; }
set
{
if (value != null)
value = value.ToUpper();
_StockSymbol = value;
}
}
3. Converti in CAPS in DB
l'utente inserisce "ibm", la query di inserimento del database viene convertita in "IBM" (ad esempio, utilizzando la funzione UPPER
in SQL)
Il risultato finale è lo stesso per gli utenti: vedono i loro dati in tutti i CAPS e il sistema non si cura se i loro dati inseriti sono nel caso corretto o meno. La risposta più "MVC compliant" sembra essere la # 1, ma se questi dati non saranno mai usati in nessun altro formato diverso da tutti i CAPS, direi che dovrebbe essere convalidato come tale prima di essere memorizzato nel database. Questo diventa più un problema di controller o di modello di visualizzazione, giusto?
Ho sentito persone parlare di realizzare questo lato client con Java (e persino con i CSS), ma sembra una soluzione molto scarsa.
Penso che la domanda sia indipendente dal linguaggio / sistema, ma se è importante, sto usando MS SQL con Entity Framework / ASP.Net MVC.
Ciò su cui mi sto sfogliando è se una regola aziendale di presentazione come questa debba influenzare il modo in cui i dati sono memorizzati nel DB (CAPS vs no CAPS). L'applicazione non si preoccupa se il simbolo del titolo IBM viene immesso come "iBm" o "ibM" ma sembra sbagliato memorizzare i dati in quel modo (verrà sempre utilizzato / visualizzato in MAIUSCOLO).
Considera questo un problema di convalida dei dati da gestire a livello di controller / modello o un dettaglio di presentazione da gestire solo alla vista?