[MVC 5] 上傳檔案時 HttpPostedFileBase 總是 Null

[MVC 5] 上傳檔案時 HttpPostedFileBase 總是 Null

Controller 原始碼

        [HttpPost]
        public ActionResult UploadFile(HttpPostedFileBase file)
        {
            if (file.ContentLength > 0)
            {
                    var fileName = Path.GetFileName(file.FileName);
                    var path = Path.Combine(Server.MapPath("~/App_Data/uploads"), fileName);
                    file.SaveAs(path);
            }
            return new HttpStatusCodeResult(System.Net.HttpStatusCode.OK);
        }

 

View 原始碼 (ps. 有用了dojo去美妝)

@using (Html.BeginForm("UploadFile", "note_my", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
    <input name="file" id="file" type="file" data-dojo-type="dojox.form.Uploader" label="Select Some Files"/>
    <input type="submit" label="Submit" data-dojo-type="dijit.form.Button" />
}

 

可能會引發的錯誤包含

1. 巢狀的 Form, 要檢查一下 _Layout.cshtml 裡頭是不是已經設定在樹狀的上層中.

2. file element 未宣告 name 或是 name 的值與參數的命名不相符

 

ps. 如果用dojo 在file element 加上屬性 multiple="true" , 亦會發生null的錯誤