2012-05-16 2 views
0

Мне нужно действие для создания типа 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> - null. Затем я пытаюсь получить от FormCollection поэтому я использую это:

string filePath = collection.GetValue(item.Name).AttemptedValue; 

но filePath только что вернулся файл Имя не путь к файлу, я не понимаю. когда я выбираю файл, я могу видеть весь путь во входных данных, но когда я хочу получить его только как имя файла. где моя проблема? Каково ваше предложение?

ответ

1

Установили ли вы enctype для multipart/form-data в теге формы? Я не могу видеть его там ...

После того, как вы сделали это, взгляните на это:

Trying to upload a file with ASP.NET MVC

Это должно покрыть ваш вопрос?

1

Вы должны изменить свой вид, чтобы включить многослойную/форм-данных:

@using(Html.BeginForm("YourAction", "YourController", FormMethod.Post, new { enctype = "multipart/form-data" })) { 
    //.... 
} 
Смежные вопросы