2011-09-01 26 views
0

爲了讓CSS樣式上載控制按鈕我創造的這個fakebutton.On點擊假按鈕我觸發文件上傳控制的點擊事件。 當我使用jquery ajax時,它給我一個錯誤htmlfile訪問被拒絕。 但是當我使用Html.BeginForm它不會給我錯誤,也不會工作。FileUpload控件使用Html.BeginForm/Ajax.BeginForm不起作用。(HTMLFILE訪問,在IE拒絕)的CSS樣式上傳控制按鈕

<div id="divUploadForm"> 
    @using (Html.BeginForm("UploadAction", "HomeController",new AjaxOptions() 
    { 
     UpdateTargetId = "divUploadForm",   
     InsertionMode = InsertionMode.Replace   
    })) 
    { 
     <fieldset>        
       <input type="text" id="fakeupload" name="fakeupload" class="fakeupload" /> 
       <input type="button" value="Browse" id="BrowseBtn" /> 
       <input type="file" name="file" id="files-to-upload" onchange="this.form.fakeupload.value = this.value;" style="display: none" /> 
       <input type='submit' id='upload-files' value='Save'/>    
     </fieldset> 
    } 
</div> 
<script type="text/javascript"> 
    $(function() { 
     $('#BrowseBtn').click(function() { 
      $('#files-to-upload').trigger('click'); 
     }); 
     $('#fakeupload').click(function() { 
      $('#files-to-upload').trigger('click'); 
     }); 
    }); 
</script> 

更新:也用

@using (Html.BeginForm("UploadAction", "HomeController", FormMethod.Post, new { enctype = "multipart/form-data", id = "UploadForm" })) 
{ 
... 
} 

不過它提供了 「錯誤:訪問被拒絕。」

回答

1

您正在使用Html.BeginFormAjaxOptions?沒有這樣的過載。只有Ajax.*幫手需要AjaxOptions

這就是說你不能用AJAX上傳文件。所以,堅持正常Html.BeginForm但一定要指定正確的enctypemultipart/form-data

@using (Html.BeginForm("UploadAction", "HomeController", FormMethod.Post, new { enctype = "multipart/form-data" })) 
{ 
    ... 
} 

如果你想使用JavaScript來上傳文件和處理類似事情的進展,等等......你可以看看其中一個numerouspluginsavailable

+0

:Thanks.Earlier我也做了同樣的事情,但它仍然給我「錯誤:訪問被拒絕」。 –

+0

@Mangesh Pimpalkar,這可能與您試圖觸發隱藏文件元素上的點擊事件有關。 –

1

如果你的文件上傳控件是隱藏的瀏覽器不會允許點擊它,出於安全原因,再加上不能使用AJAX上傳文件,JavaScript不能訪問該文件內容

相關問題