下面的代码片段显示了一个错误:
@foreach (PageViewModel root in menuData)
{
Action < PageViewModel > traverse = null;
traverse = (n) => {
@<text>
<li><a href="@n.Url">@n.Title</a></li>
</text>
n.Children.ForEach(traverse);
};
traverse(root);
}错误是:CS1002: ; expected,就在</text>结束标记之后的行上。
我在这里做错了什么?
发布于 2011-03-27 19:30:52
您可以尝试将代码片段转换为Templated Razor Delegate。
基于Phil Haack的示例,您可以创建一个类似以下内容的helper:
public static class RazorExtensions
{
public static HelperResult Traverse(this Action<PageViewMoidel> traverse,
Func<T, HelperResult> template)
{
return new HelperResult(writer =>
{
traverse = (n) => template(n).WriteTo(writer);
});
}
}免责声明:我没有测试过这一点,为了简化起见,我很方便地省略了对n.Children.Foreach的调用。
发布于 2011-03-27 19:51:42
为什么不简单地:
@foreach (var root in menuData)
{
foreach (var child in root.Children)
{
<li>
<a href="@child.Url">@child.Title</a>
</li>
}
}https://stackoverflow.com/questions/5448634
复制相似问题