2010-06-06 2 views

ответ

1

Я использую RequiredFieldValidator, который проверяет невидимый TextBox. TextBox заполняется произвольным текстом в функции OnClientUploadComplete. Единственное, что вы не можете установить фокус, когда оно проверено. В этом примере используется jQuery.

<ajaxToolkit:AsyncFileUpload runat="server" ID="afu" ClientIDMode="AutoID" UploaderStyle="Traditional" OnClientUploadComplete="asyncUploadComplete" OnClientUploadStarted="asyncUploadStarted" /> 
<asp:RequiredFieldValidator runat="server" ID="rfv" ControlToValidate="txt" Text="The file is required!" SetFocusOnError="false" /> 
<asp:TextBox runat="server" ID="txt" style="display:none" MaxLength="0" /> 
<script type="text/javascript"> 
    // AsyncFileUpload - OnClientUploadComplete 
    function asyncUploadComplete(sender, args) { 
     // Assemble info of uploaded file 
     var contentType = args.get_contentType(); 
     var info = args.get_length() + " bytes"; 
     if (contentType.length > 0) { 
      info += " - " + contentType; 
     } 
     info += " - " + args.get_fileName(); 
     // Put info in the first input field after the AsyncFileUpload control 
     var source = $(sender.get_element()); 
     source.nextAll('input').val(info); 
     // Validate immediately 
     ValidatorEnable(source.nextAll('span')[0], true); 
    } 
    // AsyncFileUpload - OnClientUploadStarted 
    function asyncUploadStarted(sender, args) { 
     // Clear the first input field after the AsyncFileUpload control 
     var source = $(sender.get_element()); 
     source.nextAll('input').val(''); 
    } 
</script> 
2

Вы также можете установить текст скрытого текстового поля в методе на стороне сервера с использованием C# или VB, а не на стороне клиента Javascript или JQuery функции.

protected void afu_UploadedComplete(object sender, AjaxControlToolkit.AsyncFileUploadEventArgs e) 
    { 
     afu.SaveAs(Server.MapPath("Uploads\\") + e.FileName); 

     txt.Text = e.FileName;  
    } 
Смежные вопросы