2013-01-16 30 views
1

我正在使用ServiceStack來呈現我的Markdown,但是我正在以編程方式進行我之後的操作。基本上我的代碼如下所示:如何在ServiceStack Markdown中將foreach迭代器添加到MarkdownPage?

//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); 

,我有一個降價頁是這樣的:

//_Layout.cshtml 
<!DOCTYPE html> 
<html> 
    <head> 
     <title><[email protected]></title> 
    </head> 
    <body> 
     <div> 
     @foreach var item in ArrayData { 
      - @item 
     } 
     </div> 
     <div><[email protected]></div> 
    </body> 
</html> 

的@Body標籤中填寫完全如預期一樣,該@PageTitle標籤。我現在希望能夠使@foreach代碼正常工作,並從可用的文檔中找不到。問題是我的語法嗎?我是否需要將代碼轉儲到單獨的文件中,然後單獨進行編譯,然後將其結果注入到我的減價頁面中,就像我正在執行@SwapVariables一樣?

任何和所有的幫助將不勝感激,如果您有任何問題,請不要問。

回答

1

你在混合ServiceStack's MVC Razor supportMarkdown Razor format。即以.cshtml結尾的任何內容是MVC Razor頁面,而僅以.md結尾的頁面將作爲Markdown Razor頁面進行處理。

在降價剃刀布局/模板頁面通常命名爲default.shtml,並且僅支持替代變量佔位的靜態HTML頁面,例如<[email protected]>,只有.MD GET結束與降價的網頁(即不是HTML模板)作爲Markdown Razor處理。

下面是Stand-alone Markdown Razor program的示例,同時這裏是stand-alone example using ServiceStack's MVC Razor support

+0

一旦我在辦公室完成,我會放棄它。我認爲你是對的,但我混淆了術語...我想要標準頁面內容(當前存儲爲* .md在數據庫中),即時轉換並注入到[at] Body替換標記中),並且我想要一個foreach迭代器,它將幫助我在單獨的物理* .md文件中提取頁面組件(如NavBar,Twitter feed等),並將結果注入到替換[at] Tag中。我一直試圖在一個地方做所有事情。 – JustinN

+0

正如你所建議的那樣,我有點困惑,這讓我的研究對答案有點困難。我已經看到了獨立鏈接,我的代碼基於它,另一個SS鏈接非常有用!我現在不僅可以讓代碼更好地工作,而且還可以將它分成多個接口,這使得我的NUnit測試更易於編寫。再次感謝! – JustinN