如何在ASP.NET MVC Razor中使用嵌套的内联模板?

时间:2011-03-11 11:42:04

标签: asp.net-mvc razor

有没有办法在Razor视图引擎中嵌套模板 在旧的Asp.net viewengine中这样吗?因为我知道Razor只支持一个级别的模板。

-John

   <%Html.Do(new string[]{"Chris","John"}, name =>
    { 
        %>

        <li><%=name%></li>

        <%Html.Do(new string[]{"Beer","Fries"}, stuff => { 
            %>
            <li><%=stuff%></li>
            <% 
        }); %>

        <hr size=1 />

        <% 
    }
); %>

1 个答案:

答案 0 :(得分:3)

将您的功能更改为Func<T, HelperResult>,然后传递@<li>@item</li>

编辑:例如:

public static IHtmlString Do<T>(this HtmlHelper html, IEnumerable<T> items, Func<T, HelperResult> template) {
    return html.Raw(String.Join("\n", items.Select(o => template(o).ToString())));
}

在剃刀中:

@Html.Do(new []{"Beer","Fries"}, @<li>@item</li>)