ASP.NET linkbutton可见属性问题

时间:2009-05-25 06:59:38

标签: asp.net

我在aspx页面后面的代码中使用了一个名为IsAdmin的公共变量。

 public partial class _news : System.Web.UI.Page
{
    public bool IsAdmin = false;
    protected void Page_Load(object sender, EventArgs e)
    {

    if (User.Identity.Name.Contains("admin"))
    {
        IsAdmin = true;
    }
    else
    {
        IsAdmin = false;
    }
 }

我使用属性Visible ='<%#IsAdmin%>'如果用户是页面的aspx设计中的管理员,则分配给我想要显示的面板。奇怪的是,它适用于我放在转发器上的链接按钮。

 <asp:Panel ID="Panel1" runat="server" Visible='<%#IsAdmin%>'>
 <asp:LinkButton ID="LinkButton2" runat="server" PostBackUrl='<%# "news_edit.aspx?     Action=edit&id=" + Convert.ToString( Eval("news_id")) %>Edit</asp:LinkButton>

 <asp:LinkButton ID="LinkButton3" runat="server" PostBackUrl='<%# "news.aspx?Action=delete&id=" + Convert.ToString( Eval("news_id")) %>'>Delete</asp:LinkButton>
        </asp:Panel>

并且它工作正常,但是在转发器之外我放置了另一个没有面板的链接按钮

 <asp:LinkButton ID="LinkButton4" runat="server" PostBackUrl="~/news_edit.aspx?action=new" Visible='<%#IsAdmin%>'>Add New Item</asp:LinkButton>

但是可见属性不起作用!我也尝试将它放在面板中并设置它的可见属性,但这也不起作用。

所以我有以下怀疑

1)问题是什么? 2)当我们使用像'&lt;%#IsAdmin%&gt;'这样的引用时,技术名称是什么?在设计页面中 3)在页面呈现后呈现页面之前是否发生页面加载?

由于

1 个答案:

答案 0 :(得分:2)

<%# %>是用于访问数据绑定字段的语法。由于您可能在某些时候对Repeater控件进行数据绑定,因此将对这些表达式进行评估。

由于您可能调用Panel上的数据绑定和Repeater外部的链接按钮,因此不会处理这些表达式。您可以将它们更改为

<%= IsAdmin.ToString() %>

并获得您想要的结果。

检查此great blog entry以获取有关差异的更多信息。

此外,页面加载发生在页面呈现之前。渲染页面是ASP.Net页面生命周期中发生的最后一件事。