我需要一個動作來創建MyModel
類型的一些字段,還有一些文件要上傳到數據庫。所以這是我的視圖的一部分:上傳文件在MVC 3
@using(Html.BeginForm()) {
<fieldset>
<dl>
<dt>
@Html.LabelFor(model => model.Name)
</dt>
<dd>
@Html.EditorFor(model => model.Name)
@Html.ValidationMessageFor(model => model.Name)
</dd>
<dt>
@Html.LabelFor(model => model.NeededFiles)
</dt>
<dd>
@foreach(var item in Model.NeededFiles) {
<div style="margin:5px;">
@Html.Label(item.Title)
<input type="file" name="@item.Name" />
</div>
}
</dl>
</fieldset>
<input type="submit" value="Create" class="button red" />
}
但在行動後,我有一些問題得到文件路徑: 這是我的操作:
[HttpPost]
public ActionResult Create(MyModel ViewModel FormCollection collection, IEnumerable<HttpPostedFileBase> files) {
//....
}
Request.Files
是null
所以我不能使用它,我不知道爲什麼。還有文件IEnumerable<HttpPostedFileBase>
爲空。然後我試着從FormCollection
得到,所以我用這個:
string filePath = collection.GetValue(item.Name).AttemptedValue;
但filePath
只是返回的文件名不是文件的路徑,我不明白。當我選擇文件時,我可以看到輸入中的所有路徑,但是當我想要得到它時,只需返回文件Name。我的問題在哪裏?你的建議是什麼?