如何在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的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支持的独立示例。