1

私は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コードを機能させたいのですが、入手可能なドキュメントからはうまくいきませんでした。問題は私の構文ですか?コードを別のファイルにダンプし、それを別のファイルにコンパイルしてから、@ SwapVariablesを実行するのと同じ方法で、その結果をマークダウンページに挿入する必要がありますか?

どんな助けでも大歓迎です、そして、あなたが質問をするならば、尋ねてください。

4

1 に答える 1

1

ServiceStack の MVC Razor サポートMarkdown Razor formatを混在させています。つまり、.cshtmlで終わるものはすべてMVC Razor ページですが、.mdで終わるページのみが Markdown Razor ページとして処理されます。

Markdown Razorでは、レイアウト/テンプレート ページは一般的に名前が付けられdefault.shtml、変数プレース ホルダーの置換をサポートする静的な HTML ページ<!--@Body-->にすぎません。

スタンドアロンの Markdown Razor プログラムの例を次に示します。一方、ServiceStack の MVC Razor サポートを使用したスタンドアロンの例を次に示します。

于 2013-01-17T13:10:53.790 に答える