[.net mvc] FileUpload HttpPostedFileBase 檔案上傳

 HttpBeginForm 跟 AjaxBeginForm

 

在.Net MVC 裡面,我們常常會用Form 包住選項,然後在前端發出Post Request 的時候,進到Controller 裡面,透過Binding 得到傳來的Model 。

 

所以在前端接到 File,Post到後端的時候會用  HttpPostedFileBase  類別來接,當然也可以先定義好在Model內,然後Controller 接的時候一樣接起來。

 

但前陣子因為專案需使用KendoUI,所以在前端會用Ajax.beginForm 

 

這時我一如往常的寫好整包的form然後把資料丟去Controller

 

這時監看式一看,HttpPostedFileBase  的資料居然是Null...

 

於是我Google了一下,發現到原因應該是因為Ajax不同步的方式所致

 

但也因為要有AjaxOptions Success 和 Fail 的操作

 

所以最後也只能,在ajaxSubmit的時候加入forceSync 的屬性

 function Save() {

            $('#frmCreate').ajaxSubmit({

                url: "@Url.Action("Action", "Controller")",

                forceSync: true,

                type: 'post',

                success: function (data) {

                    alertSuccess(data);

                }

            });

        }