使用 razorengine mvc 渲染视图

render the view using razorengine mvc

我正在使用 RazorEngine 获取视图并将其加载为 html.but 但是我的问题是我正在从我的数据库中读取 html 代码,并将其显示在我的网页上.但它在我的网页上给了我字符串结果而不是 html 输出。 我怎么解决这个问题 提前谢谢你

我的简单看法是这样的

@model Cms.ViewModules.MasterPageViewModel
@Model.PageLanguageViewModel.HtmlCode

这就是如何从我的观点中获得 html 的观点

 public static class HtmlHelperPageContent
    {
        public static IHtmlString GetPageAll(this HtmlHelper htmlHelper, MasterPageViewModelmodel)
        {

            string page = model.PageLanguageViewModel.SablonHtlmCodu;

            List<string> registeredModules = PageModulles.RegisteredModules;



            foreach (var modulename in registeredModules )
            {
                string fullmodulename = "${" + modulename + "}";
                if (page.Contains(fullmodulename ))
                {
                    string viewname = modulename.Insert(0, "PW_");

                    IHtmlString value = RenderViewHelper.RenderPartialToString("Views/Default/" + viewname + ".cshtml", model);

                    page=page.Replace(fullmodulename , value.ToHtmlString());
                }
            }

            return  MvcHtmlString.Create(page);


        }

RenderViewHelper class

public static class RenderViewHelper
    {
        public static IHtmlString RenderPartialToString(string viewPath, object model)
        {
            string viewAbsolutePath = MapPath(viewPath);

            var viewSource = File.ReadAllText(viewAbsolutePath);

            string renderedText = Razor.Parse(viewSource, model);
            return new MvcHtmlString(renderedText); 
        }
}

@Raw(@Model.PageLanguageViewModel.HtmlCode) 解决了我的问题

另一种方法是使用 IEncodedString (https://github.com/Antaris/RazorEngine/blob/master/src/source/RazorEngine.Core/Text/IEncodedString.cs) instead of IHtmlString by creating a RawString (https://github.com/Antaris/RazorEngine/blob/master/src/source/RazorEngine.Core/Text/RawString.cs) 实例。

@Raw 正是在幕后做这件事 (https://github.com/Antaris/RazorEngine/blob/master/src/source/RazorEngine.Core/Templating/TemplateBase.cs#L147)。