2011-12-06 18 views
0

我做了一個動態的多文件類型輸入上傳表單。當你選擇一個文件時,將會出現新的文件輸入。將代碼後面的「Request.Files」捕獲的所有輸入提交給表單時。.NET「Request.Files」捕獲額外的輸入

當我在.aspx文件中生成這些文件時沒有問題,但是當我使用Web用戶控制(.ascx)頁面「Request.Files」時,再添加1個請求(用於空白文件輸入)。

爲什麼ascx會計算balnk輸入?

我分享下面的代碼:

MultiImage.ascx

<ul id="imagesToUpload"> 
    <li><input type="file" class="imageToUpload" runat="server" /></li> 
</ul> 


<script type="text/javascript"> 
    $('.imageToUpload').live('change', function() { 
     $(this).parent().append('<div class="imageInfoContainer"><span>Yüklenen görsel: ' + $(this).val() + ' </span><div class="deleteImage">Sil<div><div>'); 
    if ($('input:file').length < <%= MaxImageNumber %>) { 
     $(this).parent().parent().append('<li><input type="file" class="imageToUpload" runat="server" /></li>'); 
     } 
    }); 

    $('.deleteImage').live('click', function() { 
     $(this).parent().parent().remove(); 
     if ($('input:file').length < 1) { 
      $('#imagesToUpload').html('<li><input type="file" class="imageToUpload" runat="server" /></li>'); 
     } 
    }); 
</script> 

MultiImage.ascx.cs

var imageCollection = Request.Files; //Counts all file inputs included the blank one 

回答

0

爲什麼ASCX算balnk輸入?

你的意思是,爲什麼HttpRequest對象計數該輸入?因爲它存在於請求中。然而,您可以通過查看Files集合中每個元素的HttpPostedFile.ContentLength屬性輕鬆檢查它是否爲空。

+0

正是!我做了同樣的事情來防止。但我很好奇爲什麼HttpRequest不會在Web表單頁面(.aspx)計算該輸入。有什麼不同? – pilavust

+0

@pilavu​​st我無法想象在aspx或ascx代碼中調用'Files'集合的內容時會有什麼區別。請求對象實例在頁面和控件內部是相同的,因爲它只是'HttpContext.Current.Request'。你有一些代碼只說明只包含非空輸入的'Files'集合嗎? –

+0

你是對的。我錯過了一點。我在頁面控制的aspx中使用了'HttpRequest'。很抱歉打擾。 – pilavust