我将User对象数组数据绑定到GridView控件。最后一列包含“动作”锚点(编辑,删除):
<asp:TemplateField HeaderText="Actions">
<ItemTemplate>
<a href="Remove.aspx?id=<%# Eval("user_id") %>">Remove</a>
<a href="Edit.aspx?id=<%# Eval("user_id") %>">Edit</a>
</ItemTemplate>
</asp:TemplateField>
但是,如果当前绑定的User对象具有与登录时使用的id相同的id(我可以使用this.SessionUser.Id),我不希望将第一个锚输出到Remove action。如下所示:
<asp:TemplateField HeaderText="Actions">
<ItemTemplate>
<a href="Remove.aspx?id=<%# Eval("user_id") %>">Remove</a>
if (this.SessionUser.Id <> Eval("user_id") { <a href="Edit.aspx?id=<%# Eval("user_id") %>">Edit</a> }
</ItemTemplate>
</asp:TemplateField>
我该怎么做?
谢谢!
答案 0 :(得分:3)
您可以对此
使用runat =“server”控件<asp:TemplateField HeaderText="Actions">
<ItemTemplate>
<a href="Remove.aspx?id=<%# Eval("user_id") %>">Remove</a>
<a href="Edit.aspx?id=<%# Eval("user_id") %>" runat="server"
visible='<%# this.SessionUser.Id <> Eval("user_id") %>'>Edit</a>
</ItemTemplate>
</asp:TemplateField>
所有服务器控件,甚至是带有runat =“server”的HTML标签都有这个Visible
属性,当它为假时,它会忽略最终HTML中的控件。
答案 1 :(得分:1)
不支持:(你需要写另一个函数传递给它user_id并从中获取appripriate字符串,如下所示:
//in cs file
protected string GetLink(object o)
{
if(!SessionUser.Id.Equals(o)) //or anyother way to compare equality
return string.Format("<a href=\"Edit.aspx?id={0}\">",0);
return "";
}
//in aspx file
<ItemTemplate>
<a href="Remove.aspx?id=<%# Eval("user_id") %>">Remove</a>
<%# GetLink(Eval("user_id"))%>
</ItemTemplate>
答案 2 :(得分:1)
你可以使用CSS:
<a style='visible:<%# this.SessionUser.Id <> Eval("user_id") %>' > ... </a>
确保this.SessionUser.Id是.cs文件中的公共变量