使用 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)。
我正在使用 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)。