HtmlEncode de la bibliothèque de classes

166

J'ai une bibliothèque de classes (en C #). J'ai besoin d'encoder mes données à l'aide de la méthode HtmlEncode. C'est facile à faire à partir d'une application Web. Ma question est la suivante: comment utiliser cette méthode à partir d'une bibliothèque de classes appelée à partir d'une application console?

Villageois
la source

Réponses:

208

Importez System.Web ou appelez le System.Web.HttpUtility qui le contient

Vous devrez ajouter la référence à la DLL si elle n'est pas déjà là

string TestString = "This is a <Test String>.";
string EncodedString = System.Web.HttpUtility.HtmlEncode(TestString);
Russ Bradberry
la source
7
Vous devez créer une instance de la classe Utilitaire de serveur qui est conçue pour prendre en charge une demande en cours et émuler les fonctionnalités de l'ancien objet Serveur ASP. HttpUtility est un ensemble plus léger de méthodes statiques.
AnthonyWJones
3
Assurez-vous que votre type de framework ne spécifie pas "Client Profile". Modifie cela pour le framework complet et vous aurez l'assemblage system.web disponible
Martin Murphy
System.Web.HttpUtility n'était pas disponible dans mon projet (.NET Framework 4.7.1). System.Net.WebUtility.HtmlEncode (string) était disponible et fonctionnait correctement.
demonicdaron
204

System.Net.WebUtility La classe est disponible à partir de .NET 4.0 (vous n'avez pas besoin de la dépendance System.Web.dll).

George Chakhidze
la source
7
Merci, je peux maintenant utiliser le profil client .NET 4 au lieu du framework complet!
Annagram
39

Si vous utilisez C # 3, un bon conseil est de créer une méthode d'extension pour rendre cela encore plus simple. Créez simplement une méthode statique (de préférence dans une classe statique) comme ceci:

public static class Extensions
{
    public static string HtmlEncode(this string s)
    {
        return HttpUtility.HtmlEncode(s);
    }
}

Vous pouvez ensuite faire des choses intéressantes comme celle-ci:

string encoded = "<div>I need encoding</div>".HtmlEncode();
Dan Diplo
la source
25

Essaye ça

System.Net.WebUtility.HtmlDecode(string);
System.Net.WebUtility.HtmlEncode(string);
Palanikumar
la source
4
C'est beaucoup mieux car je n'ai pas à ajouter de référence à System.Web dans mon projet WPF.
newman
7

Ajoutez une référence à System.Web.dll, puis vous pouvez utiliser la classe System.Web.HtmlUtility

AnthonyWJones
la source
3

Si vous utilisez SharePoint 2010, l'utilisation de la ligne de code suivante vous évitera d'avoir à référencer l'ensemble de la bibliothèque System.Web:

Microsoft.SharePoint.Utilities.SPHttpUtility.HtmlEncode(stringToEncode);
Koen Zomers
la source
2

Si vous travaillez avec silverlight, utilisez ceci:

System.Windows.Browser.HttpUtility.HtmlEncode(...);
Jonx
la source