2012-01-13 21 views
14

Stavo cercando un modo per sostituire tutti i caratteri speciali con una funzione di sostituzione. Voglio usare la sintassi Razor ma questoRegex Sostituisci funzione con Razor

@Product.Name.Regex.Replace(@"[^A-Za-z0-9/\s/g]", "_") 

non fa il trucco.

Ho provato questo

@Regex.Replace(@Product.Name,@"[^A-Za-z0-9/\s/g]", "_") 

ed è venuto a mancare pure.

Ormai Ho provato un sacco di altre cose e un sacco di volte continuo a ricevere questo messaggio di errore: "Il nome 'Regex' non esiste nel contesto attuale"

Qualcuno può per favore aiuto ?

risposta

21

È necessario aggiungere @using System.Text.RegularExpressions all'inizio del modello. Inoltre, this question ti aiuterà se vuoi che questo spazio dei nomi sia disponibile in tutti i modelli.

+0

Grazie mille! Questo ha fatto il trucco. –

+0

Solo per aggiungere alla risposta di Raskolnikov, quando si conosce il nome corretto della classe ma non si conosce il suo spazio dei nomi, premere CTRL + PERIOD e Visual Studio suggerirà la funzione "risoluzione" per importare lo spazio dei nomi corretto. Ma non penso che funzioni sul View, magari solo sui file CS. – programad

+0

Dovrebbe funzionare nella vista, ma non sono completamente sicuro di come uso Resharper che lo fa sicuramente. Se non lo stai usando, ti consiglio vivamente di provarlo. –

6

per essere completa, il codice giusto per l'espressione regolare è:

@Regex.Replace(@Product.Name,@"[^A-Za-z0-9\.\,_]", "_") 

Questo sostituirà tutti i caratteri speciali con un underscore.