2011-03-11 76 views
2

有沒有辦法在舊的Asp.net viewengine中像這樣在Razor視圖引擎中嵌套模板 ?就我所知,Razor只支持一個級別的模板。如何在ASP.NET MVC 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 /> 

     <% 
    } 
); %> 

回答

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>) 
+0

你能提供示例代碼嗎?我無法實現它:| – user655260 2011-03-11 16:00:06

+0

@user:對不起;我的意思是「HelperResult」。這是一個例子。 – SLaks 2011-03-11 16:27:13

+0

其中是您在評論中引用的代碼示例嗎? 上面的示例僅使用1級...問題出現在第一個內嵌模板包含一個反過來包含另一個內嵌模板的方法時。然後Razor觸發一個錯誤,說不允許嵌套模板。你知道解決這個問題的方法嗎? – 2012-01-02 10:20:22