如何在ServiceStack Markdown中为MarkdownPage添加foreach迭代器

本文关键字:MarkdownPage 添加 foreach 迭代器 中为 Markdown ServiceStack | 更新日期: 2023-09-27 17:53:57

我正在使用ServiceStack来渲染我的Markdown,但是我正在为我所追求的编程。基本上我的代码是这样的:

//MarkdownRenderer.cs
var rootPath = HttpContext.Current.Server.MapPath("~/");
var format = new MarkdownFormat { VirtualPathProvider = new PathProvider() };
var pageTitle = "Test for StackOverflow";
var pageContent = "Foobar";
var page = new MarkdownPage(format, rootPath, pageTitle, pageContent)
{
    Template = "~/_Layout.cshtml"
};
format.AddPage(page);
var view = new Dictionary<string, object>
{
    {"PageTitle", pageTitle},
    {"ArrayData", new[]{"abc","def"}}
};
var html = format.RenderDynamicPageHtml(pageTitle, view);

,我有一个Markdown页面,像这样:

//_Layout.cshtml
<!DOCTYPE html>
<html>
    <head>
        <title><!--@PageTitle--></title>
    </head>
    <body>
        <div>
        @foreach var item in ArrayData {
            - @item
        }
        </div>
        <div><!--@Body--></div>
    </body>
</html>

@Body标签完全按照预期填充,@PageTitle标签也是如此。我现在希望能够使@foreach代码工作,并且从可用的文档中我无法解决这个问题。是我的语法有问题吗?我是否需要将代码转储到一个单独的文件中,并单独编译该文件,然后将其结果注入到markdown页面中,就像我正在做@SwapVariables一样?

如何在ServiceStack Markdown中为MarkdownPage添加foreach迭代器

如果您有任何问题,请务必提出。

你混合了ServiceStack的MVC Razor支持和Markdown Razor格式。即任何以结尾的内容。cshtml是一个MVC Razor页面,而只有页面以结尾。md被处理为Markdown Razor页面。

在Markdown Razor中,布局/模板页面通常被命名为default.shtml,并且只是一个静态HTML页面,支持替换可变占位符,例如<!--@Body-->,只有以结尾的Markdown(即不是HTML模板)页面。md被处理为Markdown Razor

这是一个独立的Markdown Razor程序的示例,而这里是一个使用ServiceStack的MVC Razor支持的独立示例。