jQuery和ASP.NET控制代码隐藏的可见性

时间:2012-03-26 09:18:09

标签: jquery asp.net

在我的代码隐藏中,我将asp.net控件的display属性设置为none,如下所示;

fuDoc.Attributes("style") = "display:none;" 'fuDoc is a FileUpload control. 

在我的页面上,如果用户想要上传文档,他们点击一个链接,通过使用jQuery,我使用.show()将display属性设置为'block',如下所示;

$('#fuDoc').show();

我也试过了;

$('#fuDoc').attr('style', 'display:block;');

现在,在表单提交时,我需要检查fuDoc是否为visible,如果是,请执行标准文件上传过程,例如检查.HasFile等..

但是,尽管在HTML中将fuDoc控件设置为display:block没有问题,但以下asp.net代码始终生成True

If fuDoc.Attributes("style") = "display:none;" Then 'always results to true

这是什么原因?任何帮助,将不胜感激。

注意:FileUpload控件不是动态创建的。

2 个答案:

答案 0 :(得分:2)

问题是在回发期间不会保留客户端上的style属性更改。

一种可能的解决方法是使用隐藏字段来存储fuDoc控件的状态。

答案 1 :(得分:1)

您可以包含TextBox或HiddenField,而不是依赖于检测FileUpload是否在页面上可见:

<asp:TextBox id="txtIsFileUploadShown" runat="server" cssclass="txtisfileuploadshown" Text="0" style="display:none;" />

此控件将隐藏在您的页面上,默认情况下会存储0的值。

每当您隐藏/显示文件上传时,请更改您的代码以更改此值:

$('#fuDoc').show();
$(".txtisfileuploadshown").val('1');

隐藏时:

$('#fuDoc').hide();
$(".txtisfileuploadshown").val('0');

然后在回发后的代码隐藏中,只需检查:

If IsNumeric(txtisfileuploadshown.text) AndAlso Cint(txtisfileuploadshown.text)=1 Then
   'Do HasFile validation here.
End