我的中继器中必须有一个IF

时间:2015-09-27 21:28:58

标签: c# asp.net linq

这就是我将如何发现我的真假如何,我会做我的中继器。

如果我的喜欢是假的那么显示内容。但如果是,则显示页面上的显示内容。

现在出现此错误:

  

数据绑定方法,如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();
    }

1 个答案:

答案 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;
        }
    }
}