using RazorEngine outside asp.net I'm experiencing this error when I try to write raw html by using @Html.Raw("html string here")
:
Unable to compile template. The name 'Html' does not exist in the current context
Can you help me?
Thanks!
using RazorEngine outside asp.net I'm experiencing this error when I try to write raw html by using @Html.Raw("html string here")
:
Unable to compile template. The name 'Html' does not exist in the current context
Can you help me?
Thanks!
The solution has been found here: https://github.com/Antaris/RazorEngine/issues/34
It's enough to use @(new RawString("html string here"))
or @Raw("html string here")
instead of @Html.Raw("html string here")
.
I hope this helps! Bye
I implemented my own Raw whose result implements both IHtmlString and IEncodedString... and it worked! :)
In my csthml:
@MyRazorParser.Raw("<b>Testing</b>")
This works both when MVC uses it and when the RazorEngine parser uses it.
public class MyRawResult : RazorEngine.Text.IEncodedString, System.Web.IHtmlString
{
public string Value;
public MyRawResult(string value) { Value = value; }
public string ToEncodedString()
{
return Value;
}
public string ToHtmlString()
{
return Value;
}
public override string ToString()
{
return Value;
}
}
public static class MyRazorParser
{
public static object Raw(string str)
{
return new MyRawResult(str);
}
}
In my case my _ViewImports.cshtml file was missing a reference to:
@using Microsoft.AspNetCore.Mvc;
Once I added this ff8mania's answer worked for me.
I had a similar problem with RazorLight not being able to handle @Html.Raw calls in partial views. I just made a Utility class with a Raw method and used that instead.
public static IHtmlContent Raw(string? str)
{
return new HtmlString(str);
}
This works because my namespace is already being injected into the RazorLight engine.
private RazorLightEngine engine = new RazorLightEngineBuilder()
.UseFileSystemProject(Directory.GetCurrentDirectory().ToString())
.AddDefaultNamespaces("MyCoolProject.Models")
.UseMemoryCachingProvider()
.Build();
Then replace @Html.Raw(Model.HtmlString)
with @Utility.Raw(Model.HtmlString)
and you're ducky.
© 2022 - 2024 — McMap. All rights reserved.