A volte capita che l'utente inserisca dei dati in una textarea o in una textbox facendo copia/incolla da un documento word o altre applicazioni simili. In questi casi, vengono incollati anche i caratteri speciali che possono creare problemi in fase di salvataggio o nel momento in cui questi vengono visualizzati o stampati.
Per evitare che questi caratteri sporchi vengano salvati sul database, possiamo intercettare la fase di persistenza e ripulire le proprietà. Il seguente codice mostra come fare.
public override int SaveChanges() { foreach (var entry in this.ChangeTracker.Entries() .Where( c => c.State == EntityState.Added || c.State == EntityState.Modified)) { foreach (var propertyName in entry.OriginalValues.PropertyNames) { var property = entry.Property(propertyName); if (property.IsModified && property.ParentProperty == null && property.CurrentValue is string) { string r = "[\x00-\x08\x0B\x0C\x0E-\x1F\x26]"; property.CurrentValue = Regex.Replace( property.CurrentValue.ToString(), r, "", RegexOptions.Compiled); } } } return base.SaveChanges(); }
Per prima cosa nella classe di contesto facciamo l'override del metodo SaveChanges. All'interno di questo metodo ricerchiamo tutte le classi marcate per modificare il database. Per ognuna di queste recuperiamo le proprietà e per quelle che sono modificate, semplici e di tipo stringa lanciamo una regular expression che ne elimina i caratteri speciali.
Il problema di questo approccio sta nel fatto che rallenta la fase di persistenza soprattutto quando ci sono molte classi. Tuttavia, il fatto di avere un punto unico dove gestire questa problematica rappresenta sicuramente un grosso vantaggio.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Miglioramenti nelle performance di Angular 16
Utilizzare HiLo per ottimizzare le insert in un database con Entity Framework
Visualizzare le change sul plan di Terraform tramite le GitHub Actions
Ottenere il contenuto di una cartella FTP con la libreria FluentFTP
Come EF 8 ha ottimizzato le query che usano il metodo Contains
Eseguire operazioni sui blob con Azure Storage Actions
Le novità di Entity Framework 8
Generare file per il download da Blazor WebAssembly
Utilizzare politiche di resiliency con Azure Container App
Verificare la provenienza di un commit tramite le GitHub Actions
Creare moduli CSS in React
Creare form tipizzati con Angular
I più letti di oggi
- Personalizzare la pagina di errore con ASP.NET
- Windows Phone 8 usa IE10 come browser, quindi pieno supporto ad HTML5, compresi i ... https://aspit.co/wp-summit #WPSummit
- siete pronti? la #netconfit torna anche nel 2019!.NET Conference Italia 2019 sarà trasmessa live il 23 ottobre.Info e iscrizioni su => https://aspit.co/netconf-19
- Identificare una classe come complex type con Entity Framework Code First
- Applicare effetti bitmap agli elementi di WPF
- Data binding con ADO.NET
- Utilizzare controlli ASP.NET iterativi annidati