我不能在LinkBut​​ton中使用Eval?

时间:2013-11-14 10:17:43

标签: c# .net webforms

我在Repeater里面。这是我LinkButton的代码:

<asp:LinkButton 
    ID="AggiungiSocial" 
    CssClass="<%# ((Eval("UniqueID").ToString() != SocialEngine.paginaCrushsite.ToString()) ? "dashboard-checkaccess" : "dashboard-crushsite")%>" 
    CommandArgument='<%#Eval("UniqueID") %>' 
    runat="server" 
    onclick="cmdAggregaSocial_Click">
    Link
</asp:LinkButton> 

但似乎我不能在CssClass内使用Eval?它说The server tag is not well formed.

2 个答案:

答案 0 :(得分:2)

在这种情况下,使用单引号'之间的CssClass表达式应该有效:

<asp:LinkButton 
    ID="AggiungiSocial" 
    CssClass='<%# ((Eval("UniqueID").ToString() != SocialEngine.paginaCrushsite.ToString()) ? "dashboard-checkaccess" : "dashboard-crushsite") %>' 
    CommandArgument='<%#Eval("UniqueID") %>' 
    runat="server" 
    onclick="cmdAggregaSocial_Click">
    Link
</asp:LinkButton> 

为了更好的可读性,您可以使用返回CssClass的函数隐藏函数。

CssClass='<%# GetCssClass(Eval("UniqueID").ToString())%>' 

如果由于一些奇怪的原因没有任何效果,请实现转发器ItemDataBound事件并在那里设置LinkBut​​ton CssClass。

答案 1 :(得分:2)

一切都比看起来容易

  

单词Server和Text在标签中需要一个空格。实际上,大多数标签需要在元素之间添加间距。所以请尝试使用此标记,注意我在标记内的元素之间添加了一些空格   查看更多ASP.NET Gridview the server tag is not well formed

尝试像这样更改你的代码

<asp:LinkButton 
    ID="AggiungiSocial" 
    CssClass='<%# ((Eval("UniqueID").ToString() != SocialEngine.paginaCrushsite.ToString()) ? "dashboard-checkaccess" : "dashboard-crushsite") %>' 
    CommandArgument='<%# Eval("UniqueID") %>' 
    runat="server" 
    onclick="cmdAggregaSocial_Click">
    Link
</asp:LinkButton>