Html 使用razorengine mvc渲染视图

Html 使用razorengine mvc渲染视图,html,asp.net-mvc,razor,content-management-system,razorengine,Html,Asp.net Mvc,Razor,Content Management System,Razorengine,我使用获取视图并将其加载为html。但是,我的问题是,我正在从数据库中读取html代码,并将其显示在我的网页上。但它在我的网页上为我提供了字符串结果,而不是html输出。 我怎样才能解决这个问题 谢谢你 我的简单看法是这样的 @model Cms.ViewModules.MasterPageViewModel @Model.PageLanguageViewModel.HtmlCode 这就是如何从我的视图中获取html格式的视图 public static class HtmlHelperP

我使用获取视图并将其加载为html。但是,我的问题是,我正在从数据库中读取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);


        }

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

另一种方法是通过创建一个RawString实例来使用IEncodedString而不是IHtmlString

@Raw在幕后就是这么做的

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); 
        }
}