2016-10-27 109 views
-1

在我的MVC應用程序中,我嘗試添加多個圖像插入我的視圖,我有我的ViewModel字段。所以我會用一個普通的按鈕來呼叫我的控制器。MVC5剃刀輸入圖像到控制器從視圖

@using (Html.BeginForm()) 
{ 
    <form action="" method="post" enctype="multipart/form-data">         
    <div> 
     <input id="fileupload" type="file" multiple="multiple" name="files" /> 
    </div> 
    </form> 
    <div> 
     .... some textbox etc. (InsertViewModel) 
    </div> 
    <div class="form-group"> 
    <div class="col-md-offset-8 col-md-10"> 
     <input type="submit" value="Create" class="btn btn-primary" /> 
    </div> 
    </div> 
} 

我的控制器看起來:

[HttpPost] 
public async Task<ActionResult> Insert(InsertViewModel model, IEnumerable<HttpPostedFileBase> files) 
{ ..... } 

但我永諾讓我的文件數0對象

任何想法?

+0

[MVC 4 Razor File Upload]的可能重複(http://stackoverflow.com/questions/15680629/mvc-4-razor-file-upload) –

+0

您應該使用'@ Html.BeginForm'方法創建HTML表單 –

+0

具體而言,在這種情況下,'input type = file'不是'IEnumerable '類型默認的MVC活頁夾不會綁定到你的參數,而是留空。 –

回答

1

請將提交按鈕添加到窗體和所有文本框中。 然後它工作正常。 代碼對於在查看

<form action="" method="post" enctype="multipart/form-data"> 
<div> 
    <input id="fileupload" type="file" multiple="multiple" name="files" /> 
</div> 
<div> 
    <input id="name" type="text" name="name" /> 
</div> 
<div> 
    <input id="address" type="text" name="address" /> 
</div> 
<div class="form-group"> 
    <div class="col-md-offset-8 col-md-10"> 
     <input type="submit" value="Create" class="btn btn-primary" /> 
    </div> 
</div> 

你好

我的控制器看起來像

[HttpPost] 
    public ActionResult Index(IEnumerable<HttpPostedFileBase> files, Demo obj) 
    { 
     return View(); 
    } 

MultipleUploadFileBinded

ClassObjectBinded

,如果你需要在單一視圖中的兩個表格,您還可以發送上傳文件和接收到控制器使用Request.Files

if (Request.Files.Count > 0)//// Is image is uplaod by browse button 
{ 
       foreach(var fl in Request.Files) 
       { 
        var inputStream = Request.Files[0].InputStream; 
       } 

    } 

像上面你可以得到文件的流等

+0

這沒有解決OP的問題 - 問題是無效的嵌套表單! –

+0

可以在一個HTML頁面中包含多個

元素,但不能將它們嵌套。 –

+0

是的,我知道。這就是OP的問題所在 - 它們嵌套了形式('form action =「」method =「post」enctype =「multipart/form-data」>'在由@using(Html.BeginForm() )') - 所有這個答案說的是添加一個提交按鈕,OP已經有了,並且添加文本框,哪個OP已經有了 –