这就是我将如何发现我的真假如何,我会做我的中继器。
如果我的喜欢是假的那么显示内容。但如果是,则显示页面上的显示内容。
现在出现此错误:
数据绑定方法,如Eval(),XPath()和Bind()只能是 在数据绑定控件的上下文中使用。
<asp:Repeater ID="RepeaterReport" runat="server">
<ItemTemplate>
<%--I have much more different content here.--%>
<% if (Convert.ToBoolean(Eval("like")) != true)
{ %>
<a href="../mentor/report.aspx?like=<%# Eval("IdBesked") %>" class="btn btn-success mr-xs mb-sm">
<i class="fa fa-thumbs-up"></i>Synes godt om
</a>
<% } %>
<%--I have much more different content here.--%>
</ItemTemplate>
</asp:Repeater>
错误在这里:
<% if (Convert.ToBoolean(Eval("like")) == false) {%>
选择数据:
var MentorBeskedReport = from mb in db.MentorBeskeds
where mb.Id == beskedId && mb.Til_BrugerId == Helper.ReturnBrugerId() && mb.godkendt == true && mb.opretdato < months
select new
{
IdBesked = mb.Id,
Navn = mb.brugere.fornavn + " " + mb.brugere.efternavn,
dag = mb.opretdato,
tekst = mb.tekst,
like = mb.like // Bit in database TRUE/FALSE
};
if (MentorBeskedReport != null)
{
//Report
RepeaterReport.DataSource = MentorBeskedReport.ToList().OrderByDescending(i => i.IdBesked);
RepeaterReport.DataBind();
}
答案 0 :(得分:1)
问题是您在Eval
语句中使用if
方法。
您应该将a
代码更改为runat=server
,然后将其设为ID
。然后,您应该添加.aspx
事件并在ItemDataBound
上进行检查,而不是在.aspx.cs
文件中进行验证:
<asp:Repeater ID="RepeaterReport" ItemDataBound="RepeaterReport_ItemDataBound" runat="server">
<ItemTemplate>
<a id="myAnchor" runat="server" href="../mentor/report.aspx?like=<%# Eval("IdBesked") %>" class="btn btn-success mr-xs mb-sm">
<i class="fa fa-thumbs-up"></i>Synes godt om
</a>
</ItemTemplate>
</asp:Repeater>
public void RepeaterReport_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
if (Convert.ToBoolean(DataBinder.Eval(e.Item.DataItem, "like")) != true)
{
((HtmlControl)e.Item.FindControl("myAnchor")).Visible = false;
}
}
}