HtmlEncode de la biblioteca de clases

166

Tengo una biblioteca de clases (en C #). Necesito codificar mis datos usando el método HtmlEncode. Esto es fácil de hacer desde una aplicación web. Mi pregunta es, ¿cómo uso este método desde una biblioteca de clases que se llama desde una aplicación de consola?

Aldeano
fuente

Respuestas:

208

Importar System.Web O llame al System.Web.HttpUtility que lo contiene

Deberá agregar la referencia a la DLL si aún no está allí

string TestString = "This is a <Test String>.";
string EncodedString = System.Web.HttpUtility.HtmlEncode(TestString);
Russ Bradberry
fuente
77
Debe crear una instancia de la clase de Utilidad de servidor que esté diseñada para admitir una Solicitud actual en curso y emular características del antiguo objeto del Servidor ASP. HttpUtility es un conjunto de métodos estáticos más livianos.
AnthonyWJones
3
Asegúrese de que su tipo de marco no especifique "Perfil de cliente". Cambia esto al marco completo y tendrá el ensamblaje system.web disponible
Martin Murphy
System.Web.HttpUtility no estaba disponible en mi proyecto (.NET Framework 4.7.1). System.Net.WebUtility.HtmlEncode (string) estaba disponible y funcionaba bien.
demonicdaron
204

System.Net.WebUtility La clase está disponible a partir de .NET 4.0 (no necesita la dependencia de System.Web.dll).

George Chakhidze
fuente
77
Gracias, ahora puedo usar el perfil de cliente .NET 4 en lugar del marco completo.
Annagram
39

Si está utilizando C # 3, un buen consejo es crear un método de extensión para hacerlo aún más simple. Simplemente cree un método estático (preferiblemente en una clase estática) así:

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

Luego puedes hacer cosas ordenadas como esta:

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

Prueba esto

System.Net.WebUtility.HtmlDecode(string);
System.Net.WebUtility.HtmlEncode(string);
Palanikumar
fuente
44
Esto es mucho mejor porque no tengo que agregar referencias a System.Web en mi proyecto WPF.
newman
7

Agregue una referencia a System.Web.dll y luego puede usar la clase System.Web.HtmlUtility

AnthonyWJones
fuente
3

En caso de que use SharePoint 2010, usar la siguiente línea de código evitará tener que hacer referencia a toda la biblioteca System.Web:

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

En caso de que esté trabajando con Silverlight, use esto:

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