ASP.NET und (My)SQL - Zeilenumbrüche?

Eroli

Erfahrenes Mitglied
Hallo zusammen,

ich habe ein Problem mit ASP.NET und Zeilenumbrüchen.
Und zwar habe ich eine TextBox mit multiline=true und dort können die User nun etwas mehr Text - auch mit Zeilenumbrüchen - schreiben. Dieser Text wird dann als in einer Microsoft SQL oder MySQL Datenbank als gespeichert. Ich hatte das Problem schon mit MS SQL und benutze nun MySQL. Dort wird dieser String nun als TEXT gespeichert.


Wenn ich den Text nun ausgeben will, mache ich das so.
C#:
Label.Text=(string)DataReader.GetString(0);
Und hier ist mein Problem (oder auch schon früher). Die Zeilenumbrüche verschwinden einfach.
Ich weiß nicht wo genau, ob schon beim speichern in der Datenbank oder beim abrufen aus dieser, die Zeilenumbrüche sind weg.
Oder sind Labels nicht "fähig" Zeilenumbrüche darzustellen?

Testweise hab ich einen Label den Text "Test\n Test" zugewiesen, aber auch hier war kein Zeilenumbruch.

Habt ihr ideen?

Viele Grüße,
Roland


PS: Ich würde den Text nur ungern erst in byte konvertieren und dann so in der Datenbank speichern, da mir das die gesamte Wartung erschwert!
 

Harass

Mitglied
Servus,

das liegt daran, dass der Browser Zeilenumbrüche im HTML-Code als Leerzeichen darstellt. (Schau mal in den vom Browser angezeigten Quellcode, da wird der Text sicherlich mit Zeilenumbruch geschrieben)

Da ein Label ein Server-Control ist, was vom IIS in ein span-tag umgewandelt wird, musst du in dem Label-Text die "\n"s in "<br />"s umwandeln
C#:
Label.Text = Label.Text.Replace("\n", "<br />")
und schon funktionierts.

Grüße, Martin
 
Zuletzt bearbeitet von einem Moderator:

Eroli

Erfahrenes Mitglied
Ok, das wäre super.

Und wenn mein User nun einen Zeilenumbruch macht, wird der dann auch direkt als \n gespeichert?
 

Nico Graichen

Erfahrenes Mitglied
Ja wird er
Höchstwahrscheinlich sogar \n\r. Was aber kein weiteres Problem darstellen sollte.
Das kannst du auch ganz leicht per Debugger selbst rausfinden ;)
 

Eroli

Erfahrenes Mitglied
Ok super, könnt ihr mir noch eine Frage beantworten?

Ich möchte eine Shoutbox einrichten, kann ich die Labels dazu mit einem Attribut versehen, dass diese überall gleich sind?
Oder muss ich meine Shoutboxeinträge wirklich erst in einer Datei o.ä. abspeichern und dann bei jedem PageLoad ereignis neu laden?

EDIT:
Achja, ihr meint es wird direkt ein "\n" erzeugt. Wieso konnte ich das nie in meiner MySQL Datenbank sehen? Dort war nie ein "\n" oder ähnliches nur Leerzeichen, wenn ich mich nicht irre...
 
Zuletzt bearbeitet:

Harass

Mitglied
Bei dem ersten habe ich nicht die geringste Ahnung, was du meinen könntest, aber zu deiner zweiten Frage:
Was auch immer du benutzt um die Einträge in deiner SQL-Datenbank anzusehen (keine Ahnung, was es bei MySQL für Tools gibt), es wandelt das als Escape-Sequenz dargestellte Steuerzeichen "\n" in einen Zeilenumbruch um, genau wie der Browser. Nur dass der Browser eben (wie gesagt) Zeilenumbrüche im HTML-Quellcode in der Ausgabe als Leerzeichen interpretiert.
 

Eroli

Erfahrenes Mitglied
Ok es klappt wirklich, habe es gerade getestet.

Naja, das mit der SHoutbox werde ich wohl doch mit Datenbankanbindung machen. Danke Leute!