HtmlEncode aus der Klassenbibliothek

166

Ich habe eine Klassenbibliothek (in C #). Ich muss meine Daten mit der HtmlEncode-Methode codieren. Dies ist mit einer Webanwendung einfach zu bewerkstelligen. Meine Frage ist, wie ich diese Methode aus einer Klassenbibliothek verwende, die von einer Konsolenanwendung aufgerufen wird.

Dorfbewohner
quelle

Antworten:

208

Importieren Sie System.Web oder rufen Sie die System.Web.HttpUtility auf, die es enthält

Sie müssen den Verweis zur DLL hinzufügen, falls er noch nicht vorhanden ist

string TestString = "This is a <Test String>.";
string EncodedString = System.Web.HttpUtility.HtmlEncode(TestString);
Russ Bradberry
quelle
7
Sie müssen eine Instanz der Server Utility-Klasse erstellen, die eine aktuelle Anforderung unterstützt und Funktionen des alten ASP Server-Objekts emuliert. HttpUtility ist eine leichtere Gruppe statischer Methoden.
AnthonyWJones
3
Stellen Sie sicher, dass Ihr Framework-Typ nicht "Client-Profil" angibt. Wenn Sie dies in das vollständige Framework ändern, steht Ihnen die system.web-Assembly zur Verfügung
Martin Murphy,
System.Web.HttpUtility war in meinem Projekt (.NET Framework 4.7.1) nicht verfügbar. System.Net.WebUtility.HtmlEncode (Zeichenfolge) war verfügbar und funktionierte einwandfrei.
Demonicdaron
204

System.Net.WebUtility Die Klasse ist ab .NET 4.0 verfügbar (Sie benötigen keine System.Web.dll-Abhängigkeit).

George Chakhidze
quelle
7
Vielen Dank, jetzt kann ich das .NET 4-Clientprofil anstelle des vollständigen Frameworks verwenden!
Annagram
39

Wenn Sie C # 3 verwenden, ist es ein guter Tipp, eine Erweiterungsmethode zu erstellen, um dies noch einfacher zu machen. Erstellen Sie einfach eine statische Methode (vorzugsweise in einer statischen Klasse) wie folgt:

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

Sie können dann ordentliche Sachen wie diese machen:

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

Versuche dies

System.Net.WebUtility.HtmlDecode(string);
System.Net.WebUtility.HtmlEncode(string);
Palanikumar
quelle
4
Dies ist viel besser, da ich in meinem WPF-Projekt keinen Verweis auf System.Web hinzufügen muss.
Newman
7

Fügen Sie einen Verweis auf System.Web.dll hinzu, und verwenden Sie dann die System.Web.HtmlUtility-Klasse

AnthonyWJones
quelle
3

Wenn Sie SharePoint 2010 verwenden, müssen Sie bei Verwendung der folgenden Codezeile nicht auf die gesamte System.Web-Bibliothek verweisen:

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

Wenn Sie mit Silverlight arbeiten, verwenden Sie Folgendes:

System.Windows.Browser.HttpUtility.HtmlEncode(...);
Jonx
quelle