【发布时间】:2015-01-02 04:02:30
【问题描述】:
这是最新的 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 似乎在 action 参数的最后一部分阻塞,其中 html 代码与代码交织在一起。对于剃须刀,我将其转换为正确的语法 编辑剃刀代码
<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:只有assignment、call、increment、decrement、await和new object表达式可以作为语句使用
【问题讨论】:
-
有错误信息吗?这似乎很重要。否则,结果如何?看起来您只给了我们您的 Web 表单代码。你的 Razor 代码在哪里?
-
等一下在这里stackoverflow.com/questions/4883034/…发现了一个类似的问题
-
@Joe 您的错误发生在哪一行?
-
此行会抛出错误@
删除“@”或替换为“@:” 尝试删除表达式末尾的分号..
标签: c# asp.net asp.net-mvc razor html-helper