【问题标题】:ASP.NET linkbutton visible property issueASP.NET 链接按钮可见属性问题
【发布时间】:2009-05-25 15:11:02
【问题描述】:

我在 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='' 分配给我想要显示的面板,如果用户是页面的 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)当我们在设计页面中使用“”之类的引用时,技术名称是什么 3)页面加载是在页面渲染之前还是页面渲染之后发生?

谢谢

【问题讨论】:

    标签: asp.net


    【解决方案1】:

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

    由于您可能调用面板上的 databind 和中继器之外的链接按钮,这些表达式将不会被处理。您可能可以将它们更改为类似

    <%= IsAdmin.ToString() %>
    

    得到你想要的结果。

    查看此great blog entry 了解有关差异的更多信息。

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

    【讨论】:

    • 嗨,在使用 Visible="" 时,我收到错误消息无法从其字符串表示“' 用于“可见”属性。现在有什么问题?
    • 尝试将双引号改为单引号:Visible='&lt;%= IsAdmin.ToString() %&gt;'
    猜你喜欢
    • 1970-01-01
    • 2012-06-15
    • 2012-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-26
    相关资源
    最近更新 更多