我需要一个操作来创建MyModel
包含一些字段的类型以及一些要上传到数据库的文件。所以这是我观点的一部分:
@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
只是返回文件名而不是文件路径,我不明白。当我选择文件时,我可以看到输入中的所有路径,但是当我想获取它时,只返回文件名。我的问题在哪里?你的建议是什么?