如何在 Razor 视图中渲染数据库中的 Markdown 文本?

Jus*_*inN 5 markdown servicestack

所以我正在处理我自己的自定义路由映射(而不是让 ServiceStack 自动处理它),只是因为我的所有数据、页面内容等都存储在数据库内。我有一系列 _Layout.cshtml 文件,我的 Markdown 存储为字符串。

所以我想我在问,我需要为映射的路线继承什么类型的服务(常规服务?),以及我需要返回什么状态“在字符串 Y 中使用布局 X 和 Markdown”?

我已经阅读了 ServiceStack Wiki 和新示例页面上的示例,但无法找到任何实现此目的的示例(一切似乎都是从文件中读取 Markdown,而 Razor 从数据库中读取变量)。

如果我的问题不清楚,请告诉我,我很乐意进行相应修改。

--

编辑

一些澄清:

是的,我可以加载常规 Razor 页面。是的,我从要加载的文件中获取了常规 Markdown。

我现在只是好奇如何将 Markdown 渲染到 Razor 方法“RenderBody()”中,该方法位于字符串中(来自我的数据库)。

Arx*_*sos 5

如果您只想将Markdown 文本渲染为 HTML(不是 Markdown Razor,即没有剃刀功能!),您需要执行以下两个步骤:

var renderer = new MarkdownSharp.Markdown();
string html = renderer.Transform("___your_markdown_markup_here___");
Run Code Online (Sandbox Code Playgroud)

现在,您只需将渲染的 HTML 添加到 Razor 视图中的适当位置即可。


但是,如果您的目标是在 Razor 视图中渲染普通的Markdown 视图(即.mdServiceStack 项目中的文件),则需要遵循以下引用:

在 Razor 页面中包含部分 Markdown 视图

我们非常喜欢 Markdown 和 Razor,因此 ServiceStack 中包含了 Markdown 的增强版本,具有 Razor 功能和语法,称为 Markdown Razor,现有 Razor 用户应该立即熟悉它。

正如我们预计 Razor + Markdown 成为越来越流行的组合,我们扩展了 @Html.Partial() 支持,以嵌入来自不同视图引擎的 Partials。此功能允许您嵌入任何 Markdown 页面,就像我们使用标准 Razor Partial 语法在每个内容丰富的 Rockstar 页面中所做的那样:

@Html.Partial("Content")
Run Code Online (Sandbox Code Playgroud)

它告诉 ServiceStack 在该位置的页面内嵌入一个名为 Content 的 Partial 。首先,如果到达 Markdown Razor 视图引擎,它将查找名为 Content.cshtml 的 Partial,然后查找名为 Content.md 的 Partial。最初,它搜索当前目录,然后搜索 /Views/Shared 文件夹中任何匹配的部分。

引用自http://razor.servicestack.net