在我的代码隐藏中,我将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控件不是动态创建的。
答案 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