2012-11-27 76 views
0

我有以下的看法代碼:後從查看文件到控制器

<div> 
    <input type="file" name ="file" onchange="location.href='<%: Url.Action("ChangeImage", new{Id = Model.Id}) %>'" /> 
</div> 

而且在控制器我有ChangeImage方法:

public ActionResult ChangeImage(FormCollection collection, int Id,Products products) 
    { 
     var file = Request.Files["file"]; 

     //Do something 
    } 

但所選擇的文件不發佈到控制器。問題是什麼?如何將文件內容發送給控制器以使用它?

+0

你的表格在哪裏? – jrummell

回答

1

因爲您沒有發佈表單數據可能是原因。

當創建提交您必須指定「ENCTYPE」的文件,你可以這樣做傭工的MVC格式:

@using (Html.BeginForm("MyAction", "MyController", new { @Id = Model.Id }, FormMethod.Post, new { name = "Form", enctype = "multipart/form-data" })) 
{ 
    //all form fields code in here 
} 

那麼你將要改變你的JavaScript來發布形式,像:

document.forms[0].submit();//assuming you only have one form 

此外,您的動作參數似乎不匹配任何東西。具體爲ShopIDproducts。您可能會遇到錯誤,因爲您沒有默認值。儘管如此,我並不十分確定這一點。或者,也許你已經在你的表格的其他部分,所以它可能是好的

+0

Tnx,我該怎麼做?我的代碼問題在哪裏? – Doctor

+0

@Doctor:查看我的更新 – musefan

+0

我想要像「onchange」方法那樣在View代碼中看到。這樣我怎麼可以有onchange方法? – Doctor