2012-11-25 17 views
1

由自定義驗證程序驗證的fileupload有問題。文本框值始終爲空或onververvalidate爲空。使用自定義驗證程序的FileUpload

ASPX

<asp:CustomValidator ID="cvFileUpload" runat="server" 
       ErrorMessage="Please select file!" ControlToValidate="fuCheatingEvidence" 
       onservervalidate="cvFileUpload_ServerValidate" 
       ValidationGroup="vgSubmitForm" ValidateEmptyText="True"></asp:CustomValidator> 
      <asp:FileUpload ID="fuCheatingEvidence" runat="server" 
       Width="890px" Size="50" /> 

後面的代碼

protected void cvFileUpload_ServerValidate(object source, ServerValidateEventArgs args) 
{ 
    String fileName = fuCheatingEvidence.PostedFile.FileName; 

    if (fileName != "") 
    { 
     args.IsValid = true; 

    } 
    else 
    { 
     args.IsValid = false; 
    } 

} 

這只是一個簡單的檢查,看看是否FileUpload控件爲空,稍後我會增加一些自定義的驗證。

+0

我也使用了if(fuCheatingEvidence.HasFile),但是它返回false eventhough在FileUpload控件上有一個文件。 – ReiRei

回答

0

我檢查了你的代碼,它工作得很好。
當添加一個文件,我得到兩個hasFilefileName

protected void cvFileUpload_ServerValidate(object source, ServerValidateEventArgs args) 
{ 
    bool hasFile = fuCheatingEvidence.HasFile; // Returns true 
    String fileName = fuCheatingEvidence.PostedFile.FileName; // Returns the filename 
    ..... 
} 

這使我相信的,你有你的代碼是造成問題的其他部分。我建議創建一個只有FileUploadCustomValidator的副項目,並親自看看它是否有效。然後,嘗試找出是什麼導致您的主項目中的問題。如果您仍有問題,請提出另一個針對您所遇到的實際問題的問題。

+0

謝謝,我認爲造成這個問題的原因是我在整個頁面的一小部分都有一個UpdatePanel,但是我將該UpdatePanel設置爲UpdateMode =「Conditional」。因此,我所做的修復是將所有內容封裝在UpdatePanel中,並添加一個觸發器來執行全自動回送。但是,我認爲UpdatePanel中的FileUpload控件存在問題。 – ReiRei