Html助手可以在aspx中工作,但不能在剃刀中工作
本文关键字:工作 但不能 剃刀 Html aspx | 更新日期: 2023-09-27 18:29:21
这是最新的mvc 5.2
这是几年前一个被遗忘的博客中使用的代码中的帮助者
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;
if (items.Count() == 0)
return;
var i = 0;
foreach (var item in items)
{
if (i != 0 && i % itemsBeforeSplit == 0)
seriesSplitter();
template(item);
i++;
}
}
我像这个一样使用它
<table class="public-photo" >
<tr class="public-photo">
<% Html.SeriesSplitter(Model.Photos, 6, item => { %>
<td class="public-photo">
<a href="/Anon/DisplayPublicPhoto/?filename=<%=item.PublicFileName%>" class="public-photo" >
<%if(Model.HighRes == true){%>
<img src="/t2/<%=item.PublicFileName%>" id="<%=item.PublicFileName%>" class="public-photo" alt="thumbnail" width="140" height="105" />
<%}
else
{%>
<img src="/t/<%=item.PublicFileName%>" id="<%=item.PublicFileName%>" class="public-photo" alt="thumbnail" width="140" height="105" />
<% } %>
</a>
<a href="#" class="ReportPhoto" id="<%=item.PhotoID%>">Report this</a>
</td>
<%}, () => { %>
</tr>
<tr>
<% }); %>
</tr>
</table>
aspx中没有任何问题,但razor似乎在操作参数的最后一部分卡住了,因为html代码与代码交织在一起。对于剃须刀,我将其转换为正确的语法编辑Razor代码
<table class="public-photo">
<tr class="public-photo">
@Html.SeriesSplitter(Model.Photos, 6, icetem =>
{
@<td class="public-photo">
<a href="/Anon/DisplayPublicPhoto/?filename=@icetem.PublicFileName " class="public-photo">
@if (Model.HighRes == true)
{
<img src="/t2/@icetem.PublicFileName" id="@icetem.PublicFileName" class="public-photo" alt="thumbnail" width="140" height="105" />
}
else
{
<img src="/t/@icetem.PublicFileName" id="@icetem.PublicFileName" class="public-photo" alt="thumbnail" width="140" height="105" />
}
</a>
<a href="#" class="ReportPhoto" id="@icetem.PhotoID">Report this</a>
</td>;
},
() => {
//</tr>
// <tr>
});
</tr>
</table>
错误为CS0201:只有赋值、调用、递增、递减、等待和新对象表达式才能用作语句
使用@item.PublicFileName
而不是<%=item.PublicFileName%>
并使用@:
或<text></text>
来渲染html标签
所有的HTML助手方法都用于生成UI,因此它应该始终返回String。您的助手方法不返回任何内容。请查看MSDN上的以下文章。