RazorEngine: cannot use Html.Raw

2020-02-06 05:21发布

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!

2条回答
冷血范
2楼-- · 2020-02-06 05:27

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);
    }
}
查看更多
Lonely孤独者°
3楼-- · 2020-02-06 05:53

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

查看更多
登录 后发表回答