Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: ASP.NET MVC
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
skitale
3 / 4 / 0
Регистрация: 25.05.2012
Сообщений: 230
Записей в блоге: 1
1

Загрузка файла и формы

10.12.2018, 16:26. Просмотров 813. Ответов 4
Метки нет (Все метки)

Добрый день. Только начал изучать ASP.Net и столкнулся с проблемой:

На страничке надо загрузить файл и после указать текстом дату, за которую надо проверить этот файл на соответствие.
В контроллере у меня есть метод, который будет проверять файл - CheckSert(), а еще есть метод Upload(), который отрабатывает при загрузке файла. Проблема моя наверное глупая, но я никак не могу передать методу CheckSert() сразу и дату и путь к загруженному файлу. Казалось бы в чем проблема - загрузил файл, сохранил путь к нему в переменную filePath, а потом используешь его в методе CheckSert(), но у меня не получается. После загрузки файла страничка переходит на страницу Home/Upload и сохраненный прежде путь стирается из переменной filePath. Почему? Зачем? Как его заставить не переключаться на другую страницу? Я не могу понять.

Подскажите, плиз, как мне собрать все необходимые данные и передать их методу CheckSert(). Спасибо. Я окончательно запутался.

- Почему контроллер как бы перезагружается после каждого обнолвения странички?
- Почему после нажатия кнопки "Загрузить" меня перебрасывает на страницу Home/Upload?


Controller:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public class HomeController : Controller
    {
 
string filePath;
 
[HttpPost]
        public ActionResult CheckSert(string date)
        {
            //код для проверки файла
 
            return View("CheckResult");
        }
 
 public void Upload(HttpPostedFileBase upload)
        {
            if (upload != null)
            {
                // получаем имя файла
                string fileName = System.IO.Path.GetFileName(upload.FileName);
                // сохраняем файл в папку Files в проекте
                upload.SaveAs(Server.MapPath($"~/Files/{fileName}"));
                certPath = Server.MapPath($"~/Files/{fileName}");
            }
        }
}

View:
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
@{
    ViewBag.Title = "CheckSert";
    Layout = "~/Views/Shared/_Layout.cshtml";
}
 
<h2>CheckSert</h2>
 
@using (Html.BeginForm("Upload", "Home", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
    <input type="input" name="date" /><br>
    <input type="file" name="upload" /><br>
    <input type="submit" value="Загрузить" />
    <div><p>CertPath = @ViewBag.certPath</p></div>
}
 
@using (Html.BeginForm("Test", "Home", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
    <input type="input" name="date" /><br>
    <input type="submit" value="Проверить" />
}
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.12.2018, 16:26
Ответы с готовыми решениями:

Загрузка файла с формы на сервер
Всем привет!!! Читаю похожие темы , не могу блин сообразить. У меня в приложении создаётся профиль...

FileUpload - загрузка на мыло из формы
Как сделать так, чтобы файл загружался на мыло из самой формы вместе с текстом письма. Текст...

Загрузка файла
Как в ASP.NET организовать загрузку файла с сервера на компьютер?

Загрузка файла
имеется код: ?&lt;%@ Page Language=&quot;C#&quot; MasterPageFile=&quot;~/Main.Master&quot; AutoEventWireup=&quot;true&quot;...

Загрузка файла на клиент
Привет! Мне надо сделать загрузку файла любого типа на клиент. Как это сделать для всех типов? Я в...

4
lvlkoo
.NET C#,ASP.NET MVC
Эксперт .NET
535 / 460 / 209
Регистрация: 16.10.2010
Сообщений: 1,842
Завершенные тесты: 2
10.12.2018, 17:13 2
Цитата Сообщение от skitale Посмотреть сообщение
сохраненный прежде путь стирается из переменной filePath. Почему?
При вызове метода контроллера, каждый раз создается новый экземпляр класса этого контроллера

Зачем вам две формы? Отправляйте и файл и дату в одной форме, в один метод, проверяйте дату, затем по результату проверки сохраняйте или не сохраняйте файл
0
skitale
3 / 4 / 0
Регистрация: 25.05.2012
Сообщений: 230
Записей в блоге: 1
10.12.2018, 17:30  [ТС] 3
Цитата Сообщение от lvlkoo Посмотреть сообщение
Зачем вам две формы? Отправляйте и файл и дату в одной форме, в один метод, проверяйте дату, затем по результату проверки сохраняйте или не сохраняйте файл
Как мне совместить оба поля, если браузер, насколько я понимаю, понимает, что надо именно загрузить файл по параметру enctype="multipart/form-data"? А данный параметр прописывается в атрибутах формы, которая в свою очередь привязывается к кнопке "submit"... Как в этой же форме принимать строковые данные? Возможно у меня уже на фоне простуды развился кретинизм, но я не понимаю как.
0
lvlkoo
.NET C#,ASP.NET MVC
Эксперт .NET
535 / 460 / 209
Регистрация: 16.10.2010
Сообщений: 1,842
Завершенные тесты: 2
10.12.2018, 17:33 4
Лучший ответ Сообщение было отмечено skitale как решение

Решение

Цитата Сообщение от skitale Посмотреть сообщение
Как мне совместить оба поля
Браузер вполне отлично отсылает в форме не только файлы

HTML5
1
2
3
4
5
6
7
8
@using (Html.BeginForm("Upload", "Home", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
    <input type="input" name="date" /><br>
    <input type="file" name="upload" /><br>
    <input type="input" name="date" /><br>
    <input type="submit" value="Загрузить и проверить" />
    <div><p>CertPath = @ViewBag.certPath</p></div>
}
C#
1
2
3
4
public void Upload(HttpPostedFileBase upload, string date)
{
//проверяем и сохраняем
}
1
skitale
3 / 4 / 0
Регистрация: 25.05.2012
Сообщений: 230
Записей в блоге: 1
10.12.2018, 17:44  [ТС] 5
Цитата Сообщение от lvlkoo Посмотреть сообщение
Браузер вполне отлично отсылает в форме не только файлы
lvlkoo, спасибо большое. Что-то я реально затупил. Все заработало.
0
10.12.2018, 17:44
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.12.2018, 17:44

Загрузка файла. Беда
Здравствуйте. Такое дело: Имеется форма на вэб странице с нужными атрибутами (enctype, method,...

Загрузка и обработка файла
Есть форма @using (Html.BeginForm(&quot;Konvert&quot;, &quot;Home&quot;, FormMethod.Post, new { enctype =...

Загрузка .xls файла с сервера
Подскажите, пожалуйста. На страничке есть ссылка на экселевский файл. Нужно, чтобы при нажатии на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru