我有一个简单的图像按钮;
<asp:ImageButton Visible="false" ID="downloadImgBtn" runat="server" ImageUrl="~/images/downloadPdf.jpg" onclick="btnDownload_Click" />
但是一些奇怪的问题是当页面加载时它不会变为可见并且它符合认证条件我有一个简单的界限:
downloadImgBtn.Visible=true;
我可以看到它通过线但是图像按钮不会变为可见,但是在<asp:dropdownList
回发中我做了一些相同的行并且它在同一行上变为可见:
downloadImgBtn.Visible=true
;
确定这个问题在更多的调查中有点怪异,所以当加载时我甚至看不到HTML Source
中的图像按钮,并且当源代码html的下拉列表中有它时。
页面加载后:
<div class="col-lg-2"><img alt="Loading" src="../../images/ajax-loader.gif"
style="display:none" id="Img2"></div>
后退后退:
<div class="col-lg-2"> <input type="image" src="../images/downloadPdf.jpg"
id="downloadImgBtn" name="downloadImgBtn"> <img alt="Loading" src="../..
/images/ajax-loader.gif" style="display:none" id="Img2"></div>
我现在甚至将ImageButton
设为Visible=True
。
另外为确保Div或任何父控件未被隐藏,我在Label
之前放置ImageButton
:
<asp:Label runat="server" ID="lblText">HELLO I AM HERE...</asp:Label>
它在Page load ...上显示完全正常。
有什么建议吗?
答案 0 :(得分:1)
通常,当我遇到这个问题时,原因是控件的一个父控件是不可见的。 Visible
属性是继承的。所以它可能在Panel
中仍然是Visible=false
。
MSDN在文档中提及它:
如果未呈现容器控件,则包含它包含的任何控件 即使您设置了Visible属性,也不会呈现 个人控制为真。在那种情况下,个人控制 即使您已明确设置,也会为Visible属性返回false 这是真的。 (也就是说,如果父控件的Visible属性是 设置为false,子控件继承该设置和设置 优先于任何本地设置。)
根据您编辑的问题,HTML甚至不包含控件。 Visible
是服务器端属性。如果您将控件的Visible
- 属性设置为false
,则HTML将无法呈现。因此,您甚至无法在客户端访问它,只能在服务器端访问它。在您将其显示后,它将呈现在HTML中您可以看到:
<div class="col-lg-2"> <input type="image" src="../images/downloadPdf.jpg"
id="downloadImgBtn" name="downloadImgBtn"> <img alt="Loading" src="../..
/images/ajax-loader.gif" style="display:none" id="Img2"></div>
但是你已经将display
设置为none
仍然隐藏它。删除它,你就完成了。
答案 1 :(得分:0)
由于Visible =&#34; false&#34; .....你没有在负载上看到图像按钮。这意味着按钮没有在页面上呈现。
它会在回发上出现,因为您设置了Visible = true
您设置Visible = true并且您没有看到它,而不是检查您的代码。 Visible = true以下的一些行你有一个Visible = false,或者我怀疑这个...你有一个重定向到同一页面。