我想根据会话对象的值隐藏锚标记。我怎么想这样做?
答案 0 :(得分:5)
假设您希望在服务器端执行此操作 - 代码将是
之类的代码<a id="MyLink" runat="server" ...
MyLink.Visible = Convert.ToBoolean(Session["MyKey"]);
注意标记(aspx)文件中的runat="server"
,这对于在代码隐藏中引用控件很重要。
答案 1 :(得分:4)
将ID
和runat
属性添加到锚点:
<a id="anchor" runat="server"></a>
在代码隐藏中设置可见性:
protected void Page_Load(object sender, EventArgs e)
{
anchor.Visible = (bool)Session["showAnchor"];
}
答案 2 :(得分:1)
<a id="aid" runat="server" href="link">Text</a>
if (Session["value"] != null)
{
aid.Visible = true;
}
else
{
aid.Visible = false;
}
答案 3 :(得分:1)
作为Alex,但为了整洁,我倾向于将可见性代码放在aspx标签内,如果它不是太长,例如:
<a id="aid" runat="server" href="link" Visible='<%# (Session["value"] != null) ? Session["value"] : bool.Parse("false") %>' >Text</a>
还没有尝试过会话,但它已经使用了代码隐藏功能和绑定值,所以我不明白为什么它不适用于会话变量。
在相关的说明中,我没有设法直接以这种方式传递布尔值,因此使用了bool.Parse(“”)。不明白为什么它不会直接起作用,因为当你使用像Visible ='&lt;%#string.IsNullOrEmpty()%&gt;'...
这样的值时它会起作用答案 4 :(得分:0)
这取决于您是想在回发/初始加载时隐藏链接还是在页面已经传送到客户端之后。
如果要在回发/初始加载时隐藏链接,可以在链接中添加runat =“server”属性,并在后面的代码中设置其Visible属性。
如果要隐藏客户端上已有的页面上的链接,可以使用Ajax调用轮询服务器,然后使用javascript隐藏链接。