2012-03-26 52 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