[C#] Problem mit < >

yellowspam

Erfahrenes Mitglied
Hi@all:

Ich habe ein Problem...nämlich:

Ich habe einen Text in einer GridView, dieser darf keine <>-zeichen zulassen, da sonst jemand irgend einen Code ausführen lassen kann.
Daher habe ich folgende Funktion geschrieben, welche den String durchsucht und die </> durch &lt/&rt ersetzt.

C#:
public static string PrepareHtmlOutput(string stringToPrepare)
        {
            if (stringToPrepare != null || stringToPrepare != "") 
            {
               
                stringToPrepare = Regex.Replace(stringToPrepare, "<", "&lt;");
                stringToPrepare = Regex.Replace(stringToPrepare, ">", "&rt;");
             }
            
            return stringToPrepare;
        }




Nun habe ich aber nen Text in dem keine solche Tags drinstehen.. die Funktion schmeißt mir dann folgenden Fehler:

Value cannot be null.
Parameter name: input

Gut, dachte ich mir.. es liegt wahrscheinl. daran dass keine <>-Zeichen im Text vorkommen, also modelte ich die Funktion etwas um:

C#:
public static string PrepareHtmlOutput(string stringToPrepare)
        {
            if (stringToPrepare != null || stringToPrepare != "") 
            {
                if(stringToPrepare.StartsWith("<") && stringToPrepare.EndsWith(">"))
                {
                stringToPrepare = Regex.Replace(stringToPrepare, "<", "&lt;");
                stringToPrepare = Regex.Replace(stringToPrepare, ">", "&rt;");
                }
            }
            
            return stringToPrepare;
        }

Beim laden der Detailsview bekomme ich die folgende Meldung:

"Object reference not set to an instance of an object."


So nun meine Frage: gibts da noch ne andere Möglichkeit zu überprüfen ob < & > vorkommen bzw. wo habe ich falsch gedacht?
 
Ich nehm mal an, du hast das mit String.Replace gelöst. Wenn nicht, wäre es schön, wenn du uns die Lösung verraten würdest :)
 
Ich bin draufgekommen, dass ich diese Lösung unötig Code ist, weil das Replacen der <>-tags auch funktioniert wenn gar keine da sind. ^^

Aber ja du hast recht, ich habs mit Regex.replace gemacht ^^

Dafür habe ich nun das Problem dass nur der rechte Tag replaced wird. Der linke ist nachwie vor ein <
 
Hat sich leider auch erledigt. Hier die Lösung:

C#:
description = Regex.Replace(description,"<", "&lt;");
description = Regex.Replace(description,">", "&gt;");

Die Spitzklammer, welche nach rechts schaut ist im HTML nicht &rt;, sondern &gt; daher wurde mir der eine Tag richtig angezeigt und der andere nicht. ^^
 

Neue Beiträge

Zurück