首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Razor:<text></text>在lambda中

Razor:<text></text>在lambda中
EN

Stack Overflow用户
提问于 2011-03-27 18:26:13
回答 2查看 1.9K关注 0票数 1

下面的代码片段显示了一个错误:

代码语言:javascript
复制
@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>结束标记之后的行上。

我在这里做错了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-27 19:30:52

您可以尝试将代码片段转换为Templated Razor Delegate

基于Phil Haack的示例,您可以创建一个类似以下内容的helper:

代码语言:javascript
复制
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的调用。

票数 3
EN

Stack Overflow用户

发布于 2011-03-27 19:51:42

为什么不简单地:

代码语言:javascript
复制
@foreach (var root in menuData)
{
    foreach (var child in root.Children)
    {
        <li>
            <a href="@child.Url">@child.Title</a>
        </li>
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5448634

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档