gpt4 book ai didi

asp.net-mvc-3 - ASP.NET MVC3 中的 HtmlHelper 使用 Action 作为模板 : Razor syntax?

转载 作者:行者123 更新时间:2023-12-02 00:35:21 27 4
gpt4 key购买 nike

首先让我说也许有更好的方法来做到这一点,Razor 正在照亮这条路。在任何情况下,我都有一个 HTML 帮助器,它充当某种重复器,但在重复任意次数后,它会插入一个备用模板。最明显的用途?在 x 个单元格之后开始新行的表格。助手看起来像这样:

public static void SeriesSplitter<T>(this System.Web.Mvc.HtmlHelper htmlHelper, IEnumerable<T> items, int itemsBeforeSplit, Action<T> template, Action seriesSplitter)
{
if (items == null)
return;
var i = 0;
foreach (var item in items)
{
if (i != 0 && i % itemsBeforeSplit == 0)
seriesSplitter();
template(item);
i++;
}
}

在 Webforms View 中,用法如下所示:

<table>
<tr>
<% Html.SeriesSplitter(Model.Photos, 4, photo => { %>
<td><img src="<%=ResolveUrl("~/Thumbnail.ashx?id=" + photo.ID)%>" alt="<%=Html.Encode(photo.Title)%>" /></td>
<% }, () => { %></tr><tr><% }); %>
</tr>
</table>

在这种情况下,您将有一个呈现四个单元格的表格,然后使用备用模板(行开始和结束标记)开始一个新行。问题是我找不到在 Razor 中完成这项工作的方法。在 Razor View 中使用 lambda 似乎是一个非常奇怪的结构。

你会怎么做?

最佳答案

Phil 实际上有一篇很好的帖子解决了这里的问题:

http://haacked.com/archive/2011/02/27/templated-razor-delegates.aspx

关于asp.net-mvc-3 - ASP.NET MVC3 中的 HtmlHelper 使用 Action<T> 作为模板 : Razor syntax?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4883034/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com