#asp.net-mvc-2 #file-upload
#asp.net-mvc-2 #загрузка файла
Вопрос:
У меня есть возможность отредактировать некоторые детали документа и загрузить два связанных изображения. Я хочу, чтобы это представление выполняло два разных действия на моем контроллере: одно для сохранения всех полей формы и одно для загрузки файла. У меня есть одна форма вокруг основной формы и составная форма вокруг ввода файла uplaod
<% using (Html.BeginForm("Edit", "Document", FormMethod.Post,
new { enctype = "multipart/form-data" })) { %>
<% =Html.TextBoxFor(model => model.Document.Title) %>
<%= Html.TextBoxFor(model => model.Document.Description) %>
//and then another multipart form around the file upload part like this
<% using(Html.BeginForm("FileUpload", "Document", FormMethod.Post, new { enctype = "multipart/form-data" }))
<input type="file" id="fileUpload" name="iamge" size="30" />
<input type="submit" value="Upload" />
<% { %>
<input type="submit" value="Save" />
<% } %>
Загрузка файла происходит корректно при публикации внутренней формы, но я хочу, чтобы контроллер снова вернул готовую модель в основное представление со всеми сохраненными полями формы. Представление строго типизировано, поэтому я подумал, что отправлю всю модель в действие загрузки файла, используя внутреннюю форму. Могу ли я обойтись без наличия только одной составной формы, которая будет размещать файлы и данные формы независимо от того, какой элемент ввода нажат? Это хорошая практика. В конце дня все, что я хочу, это убедиться, что все данные моей формы сохраняются в форме редактирования после загрузки моего файла.
Как я могу передать данные модели в действие загрузки файла из внутренней формы?
Ответ №1:
Я не думаю, что вам нужна внутренняя форма. У вас может быть просто внешняя форма, которая должна анализироваться в вашей модели, если вы настроили аргументы действия. Тогда у вас мог бы быть другой логический путь с точки зрения, например, сохранения других элементов модели в зависимости от того, были ли опубликованы какие-либо файлы.
Затем вы смогли бы передать модель, которая была опубликована обратно, обратно в представление.
Комментарии:
1. При использовании только одной формы, я думаю, моя проблема в том, что я использую две кнопки отправки, чтобы опубликовать одну форму для двух действий. Возможно, в этом случае мне следует использовать ActionLink .
2. Конечно, это зависит от вашей реализации, но я бы посоветовал вам использовать одно и то же действие и направлять свою логику в зависимости от того, был ли файл выбран / загружен или нет…
3. Мне удалось заставить его работать, обработав все с помощью одного действия с одной формой, как вы предложили. Приветствия @Badger