Asp问题:图像按钮

时间:2015-01-07 09:07:07

标签: c# asp.net

我有一个简单的图像按钮;

<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">  &nbsp;&nbsp; <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 ...上显示完全正常。

有什么建议吗?

2 个答案:

答案 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">  &nbsp;&nbsp; <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,或者我怀疑这个...你有一个重定向到同一页面。