我正在使用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一样?
任何人和所有的帮助都将非常感谢,如果你有任何问题,请尽管问。
发布于 2013-01-17 21:10:54
您正在将ServiceStack's MVC Razor support和Markdown Razor format混合在一起。也就是说,任何以.cshtml结尾的页面都是MVC Razor页面,而只有以.md结尾的页面才会被处理为Markdown Razor页面。
在Markdown Razor中,布局/模板页面通常被命名为default.shtml,并且只是一个支持替换可变占位符(例如<!--@Body--> )的静态超文本标记语言页面,只有以.md结尾的Markdown页面(即非HTML模板)才会被处理为Markdown Razor。
这里是一个Stand-alone Markdown Razor program的例子,而这里是一个stand-alone example using ServiceStack's MVC Razor support。
https://stackoverflow.com/questions/14369169
复制相似问题