2017-02-28 88 views
0

我有兩個視圖模型如下文件上傳來的空

public class hdr_doc_upload 
{ 
    public string document_name { get; set; } 
    public HttpPostedFileBase UpFile { get; set; } 
} 

public class list_doc 
{ 
    public List<hdr_doc_upload> hdr_doc_upload { get; set; } 
} 

控制器

public ActionResult Create_Group() 
{ 
    list_doc list = new list_doc(); 
    return View(list); 
} 

查看

@Html.TextBoxFor(model => model.hdr_doc_upload[0].document_name) 
<input type="file" id="hdr_doc_upload[0].UpFile" name="hdr_doc_viewmodel[0].UpFile" /> 
@Html.TextBoxFor(model => model.hdr_doc_upload[1].document_name) 
<input type="file" id="hdr_doc_upload[1].UpFile" name="hdr_doc_viewmodel[1].UpFile" /> 

給我下面的屏幕

enter image description here

但是當我提交頁面時,我們只得到文本框的值,文件變爲空。 enter image description here

+0

'名稱=「hdr_doc_viewmodel [0]之前.UpFile'與你的模型沒有關係(它的'hdr_doc_upload',而不是'hdr_doc_viewmodel') –

+1

並使用'@ Html.TextBoxFor(m => m.hdr_doc_upload [i] .UpFile,new {type =「file 「})'在'for'循環中並在GET方法中向您添加2個項目 –

+0

@StephenMuecke實際上文件的數量將動態..有可能創建一個按鈕,並動態生成相同的? – Sachu

回答

1

您創建的手冊<input>具有name屬性,這些屬性與您的模型無關。屬性必須

但是,你應該生成你的文件輸入控制正確使用強類型TextBoxFor()法,for循環中。

在您的控制器,填充的hdr_doc_upload 2個新實例模型中的模型傳遞給視圖

list_doc list = new list_doc() 
{ 
    new list_doc(), 
    new list_doc() 
}; 
return View(list); 

然後在視圖

for(int i = 0; i < Model.Count; i++) 
{ 
    @Html.TextBoxFor(model => model.hdr_doc_upload[i].document_name) 
    @Html.TextBoxFor(model => model.hdr_doc_upload[i].UpFile, new { type = "file" }) 
}