2012-03-26 90 views
0

在我的代码隐藏中,我将asp.net控件的display属性设置为none,如下所示:jQuery和ASP.NET控制代码背后的可见性

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

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

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

我也试过了;

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

现在,在表单提交,我需要检查,如果fuDocvisible如果是这样,例如做标准文件上传过程检查.HasFile等。

然而,尽管fuDoc控制设置为display:block在HTML没有问题,下面的asp.net代码总是产生真正的

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

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

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

回答

1

不是依赖于检测的FileUpload是否是在页面上可见,你可以包含一个文本框或HiddenField如:

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

这种控制将您的网页上隐藏,存储的值0默认。在后

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

然后在你的代码隐藏回来,简单地说:

每当你隐藏/显示文件上传,改变你的代码也更改此值:

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

躲在当检查:

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

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

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

+0

谢谢你codrin,投票赞成第一,但不得不接受另一个,因为它包括例子并且可能对有类似问题的其他人有帮助。 – 2012-03-26 12:30:41