I have a very simple asp:textbox
with the multiline
attribute enabled. I then accept just text, with no markup, from the textbox. Is there a common method by which line breaks and returns can be converted to <p>
and <br/>
tags?
I'm not looking for anything earth shattering, but at the same time I don't just want to do something like:
html.Insert(0, "<p>");
html.Replace(Enviroment.NewLine + Enviroment.NewLine, "</p><p>");
html.Replace(Enviroment.NewLine, "<br/>");
html.Append("</p>");
The above code doesn't work right, as in generating correct html, if there are more than 2 line breaks in a row. Having html like <br/></p><p>
is not good; the <br/>
can be removed.
Depending on exactly what you are doing with the content, my typical recommendation is to ONLY use the
<br />
syntax, and not to try and handle paragraphs.I know this is old, but I couldn't find anything better after some searching, so here is what I'm using:
If you can't use HttpUtility for some reason, then you'll have to do the HTML encoding some other way, and there are lots of minor details to worry about (not just
<>&
).HtmlEncode only handles the special characters for you, so after that I convert any combo of carriage-return and/or line-feed to a BR tag, and any double-spaces to a single-space plus a NBSP.
Optionally you could use a PRE tag for the last part, like so:
I know this is an old post, but I've recently been in a similar problem using C# with MVC4, so thought I'd share my solution.
We had a description saved in a database. The text was a direct copy/paste from a website, and we wanted to convert it into semantic HTML, using
<p>
tags. Here is a simplified version of our solution:In our case, to write out a variable, we needed to prefix
@
before any variable or identifiers, because of the Razor syntax in the ASP.NET MVC framework. However, I've shown this with aConsole.Write
, but you should be able to figure out how to implement this in your specific project based on this :)Your other option is to take the text box contents and instead of trying for line a paragraph breaks just put the text between PRE tags. Like this:
How about throwing it in a
<pre>
tag. Isn't that what it's there for anyway?