【发布时间】:2012-05-12 09:08:45
【问题描述】:
我有这样的图像:
<asp:Image runat="server" ID="btnabout1" ImageUrl="~/graphics/buttons/btnabout1.png" AlternateText="About" />
我可以像这样(显然)从代码隐藏中访问控件:
btnabout1.Visible = false;
但这不起作用:
Page.FindControl("btnabout1").Visible = false;
重点是使用变量controlID并设置属性。
我想我对方法的理解有误,请高人赐教。
目的是创建一个获取当前页面文件名并相应地设置图像/按钮可见/不可见的方法。像这样:
string filename = System.IO.Path.GetFileName(HttpContext.Current.Request.FilePath);
string strippedfilename = filename.Substring(0, filename.IndexOf("."));
Page.FindControl("btn" + strippedfilename + "3").Visible = true;
Page.FindControl("btn" + strippedfilename + "2").Visible = false;
Page.FindControl("btn" + strippedfilename + "1").Visible = false;
由于我无法让 Page.FindControl 工作,我正在使用
Dictionary<string, Control[]>
相反,但它当然不是动态的,因为添加新页面意味着必须添加到字典中,但我想现在还可以......
【问题讨论】:
-
您在哪个页面生命周期事件中调用
Page.FindControl()方法?确保它至少是Page_Init(或以后的事件)。您可以查看此链接以查看通过 ID 查找控制的递归方法:msdn.microsoft.com/en-us/library/y81z8326.aspx。还要确保控件 NOT 在项目模板中,即在Repeater控件中(这样就不会找到)。 -
这张图片是在 yourpagename.aspx 还是 yourusercontrol.ascx 中?