I am currently writing a small templating system in ASP.NET to allow users to add content. For example, the user can enter the string (variable type is string).
topHeader[x] = "They think it's all over. It is now!";
However, one change that’s needed is the ability to add some basic HTML tags within this content, so the following can be done
topHeader[x] = "They think it's all over. <strong>It is now!</strong>";
or
topHeader[x] = "They think it's all over. <a title="Football News" href="URL">It is now!</a>";
If you add such things into strings now they are not formatted as HTML, but I want to somehow escape them so that they can be. Naturally I’ve looked on the Internet for the answer, but as Razor is fairly new there’s not much out there to help me out.
Anyone have an idea of how to do this?
You need to create an
IHtmlStringimplementation holding your HTML source.Razor plans to have a helper method to do this for you, but, AFAIK, it doesn’t yet, so I believe you’ll need to create your own class that implements the interface and returns your HTML from theGetHtmlString()method.EDIT: You can use the
HtmlStringclass.You can either change your
topHeaderdictionary to holdIHtmlStrings instead ofStrings, or you can leave your code as is, but wrap it in anHtmlStringin the Razor view:Make sure to correctly escape any non-HTML special characters.