I have some HTML that is stored in a string. How can I render this is a Blazor/Razor view without automatic HTML encoding?
Feature to render raw HTML was added in Blazor
0.5.0 version. This is the example of how raw HTML can be rendered from string
containing HTML content:
@((MarkupString)myMarkup)
@functions {
string myMarkup = "<p class='markup'>This is a <em>markup string</em>.</p>";
}
More info can be found in "Blazor 0.5.0 experimental release now available" announcement.
Not right now, but will have it probably in the next version: Follow this
Workaround (from that issue):
cshtml
@functions{ [Parameter] string Content { get; set; } private ElementRef Span; protected override void OnAfterRender() { Microsoft.AspNetCore.Blazor.Browser.Interop.RegisteredFunction.Invoke("RawHtml", Span, Content); } }
index.html
Blazor.registerFunction('RawHtml', function (element, value) { element.innerHTML = value; for (var i = element.childNodes.length - 1; i >= 0; i--) { var childNode = element.childNodes[i]; element.parentNode.insertBefore(childNode, element); } element.parentNode.removeChild(element); return true; });