Member 12078709 Ответов: 2

Функция загрузки файлов Mvc не работает при проверке уровня модели


Я использую mvc в своем проекте, я сделал образец регистрационной формы с проверкой уровня модели

В моей форме у меня есть имя, фамилия, номер мобильного телефона и детали документа участника, все обязательные поля, кроме деталей документа

После ввода данных участника у меня есть кнопка (Добавить документ), как только я нажму на нее, она отобразит текстовое поле,кнопку fileupload я сделал эту функцию с помощью jquery, после этого я введу имя документа в текстовое поле и просмотрю документ с помощью элемента управления fileupload, до сих пор функциональность работает нормально.

Но после этого на post action, если какая-либо проверка происходит на уровне модели для требуемых полей, элемент управления fileupload исчезает,поэтому каждый раз , когда я снова должен загрузить файл, нажав кнопку(Добавить новый документ), есть ли альтернатива, чтобы сохранить загруженный файл в форме?

Что я уже пробовал:

Моя библиотека jQuery файл загрузки функциональность

&ЛТ;таблица ID="док" класс="таблица-полосатый стол-наведите стол-купе"&ГТ;

<tr>
< th style= "width:200px">
имя документа
< / th>

< th style= "width:500px">
Файл для загрузки
< / th>


< th style= "width:6px">

< / th>


< / tr>

@if (Model != null)
{
если (модель.table_dtls_doc != нуль)
{
для (тип int я = 0; Я &л; модель.table_dtls_doc .Граф; i++)
{

<tr>
< td>
@формат HTML.HiddenFor(model => Model. table_dtls_doc [i]. detail_id);
@формат HTML.HiddenFor(model => table_dtls_doc[i]. id);
@HTML-код.TextBoxFor(модель =&ГТ; модель.table_dtls_doc [я].имя_документа)&ЛТ;/тд&ГТ;
< td>
@Html. TextBoxFor(model => model.table_dtls_doc [i].UpFile, new { type = " файл" })
< input type= "hidden" name= " table_dtls_doc .Индекс "value=" @i " />
< / td>


< / tr>
}
}
}

< / Таблица>
&л;тип кнопки="закладку" название="Н" идентификатор="Н" значение="Н" класса=""и gt;Добавить новый док &ЛТ; кнопка/&ГТ;

j snooze

Либо переместите свою проверку на javascript или ajax, чтобы обратная передача на Вашей странице не была выполнена, либо загрузите свой файл независимо от того, что на обратной передаче-это несколько вариантов.

2 Ответов

Рейтинг:
1

F-ES Sitecore

Вы не можете сохранить контроль загрузки файлов между постами по соображениям безопасности. Если вы хотите загрузить файл, то разделите свой процесс на два этапа. Сначала позвольте людям ввести все свои данные, и как только это будет сделано, покажите им форму, в которую они могут загрузить свой файл.


Рейтинг:
0

Member 12003387

Вам нужно сохранить форму с помощью ajax-запроса и получить ответ. Если проверки на стороне модели успешно выполнены, то сохраните данные и обновите страницу, в противном случае сохраните форму как свою и покажите только сообщения об ошибках.

для этого можно использовать Ajax.BeginForm() on view или простой ajax-запрос с помощью j-query.