2012-03-04 57 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