2017-09-26 16 views
1

我试图让用户编辑他们在我的项目上所做的各自的评论。我想要做的是将会话中的当前用户与进行相应评论的用户的评估值进行匹配。下面是我迄今所做的:如何启用href以显示某些条件。 ASP.NET C#

<% if (Session["user"] != null && Session["user"] == Eval("first_name")) 
      { 
       %> 

     <a href="#">Edit</a> 

     <% 
      } 
      else 
      { 

      } 
      %> 

但是,它给出了一个错误:

'Databinding methods such as Eval(), XPath(), and Bind() can only be used in the context of a databound control.'

下面是完整的代码:

<asp:Repeater ID="r2" runat="server" OnItemCommand="r2_ItemCommand"> 
    <HeaderTemplate> 



    </HeaderTemplate> 
    <ItemTemplate> 

    <% if (Session["user"] != null) 
      { 
       %> 
     <br /> 
     <asp:Hyperlink runat="server" ID="myLink" Text="Edit" Visible="false"></asp:Hyperlink> 
     <% 
      } 
      else 
      { 

      } 
      %> 
      <br /> <%#Eval("title") %><br /> 
      By <%#Eval("first_name") %> <%#Eval("last_name") %> on <%#Eval("date") %><br /> 

    </ItemTemplate> 
    <FooterTemplate> 

    </FooterTemplate> 
</asp:Repeater><br /> 

关于如何解决此问题或者任何想法任何可以完成的更好的解决方案?

+0

,你试图做这样的数据绑定控件的上下文之外的错误状态。你是?如果是这样,你期望'Eval(“first_name”)'做什么?为什么?你在这个if语句中试图检查的条件是什么? – David

+1

您可以使用'HyperLink'控件并将其设置为可见代码。 – VDWWD

回答

1

评估和演示,只有当你在一个服务器控件设置绑定属性的作品。

要做到这样的事情,你既可以有一个服务器控件容器,或使一个asp超链接控制。

HTML

<asp:Hyperlink runat="server" ID="myLink" Text="edit" Visible="false"></asp:Hyperlink> 

C#

if (Session["user"] != null && Session["user"] == myObject.first_name)) 
    myLink.Visible = true; 
+0

myLink无法在C#页面中检测到,因为我试图在Repeater的Item Template中显示超链接,有什么想法? –

+0

在中继器的ItemDataBound事件中(每次重复触发),执行FindControl查找超链接。这是一个很好的例子。 https://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.repeater.itemdatabound(v=vs.110).aspx – Seano666