2012-03-04 62 views
3

有沒有辦法獲得佈局文件中定義的部分列表?例如,如果我想知道我的Shared/_Layout.cshtml文件中定義了哪些部分,是否有解析該佈局文件的方法,以便知道佈局中存在哪些部分?剃刀 - 獲取部分列表

回答

1

有沒有內置的功能我知道的,因爲該名稱不一定而不執行視圖聞名。

你可能只運行在你的佈局正則表達式,像

[^@]@RenderSection\(\s*"(?<name>[^"]+)"\s*\) 

它接受@RenderSection( 「富」)或@RenderSection( 「富」),但跳過@@ RenderSection(中@ @轉義@)。

然而,這種假設部分的名稱傳遞作爲一個字符串。該視圖也可能看起來像(不是你典型的情況,但可能):

@RenderSection(Model.SectionName) 

在這種情況下,你幾乎失去了。

+0

這看起來像可以工作。以字符串形式閱讀Layout的最佳方式是什麼? – Victor 2012-03-04 17:10:53

+0

只有在視圖已經呈現時您纔會知道佈局(除非您在從操作返回視圖結果時明確提供主控),這可能會使整個想法變得有點棘手。如果您知道佈局的(虛擬)路徑,則可以使用[File.ReadAllText](http://msdn.microsoft.com/de-de/library/system.io.file.readalltext.aspx)。 – 2012-03-04 17:22:29

+0

所以我想測試這樣的正則表達式: 正則表達式layoutRegex =新的正則表達式(? 「[^ @] @ RenderSection \(\ S *」( [^ 「] +)」 \ S * \)「) ; var sections = layoutRegex.Matches(layoutAsString); 但我得到一個錯誤 - 「未轉義的轉義序列」我試圖測試這個錯誤嗎? – Victor 2012-03-04 17:50:22