Форум программистов, компьютерный форум, киберфорум
C#: ASP.NET MVC
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.61/18: Рейтинг темы: голосов - 18, средняя оценка - 4.61
0 / 0 / 0
Регистрация: 10.10.2019
Сообщений: 35

Как принудительно обновить страницу?

21.10.2019, 22:16. Показов 3844. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть view CardCreate. Из нее я через js перехожу в controller ImageCreate и передаю в него выбранное перед этим изображение. Вот отрывок из js view CardCreate:
C#
1
2
3
4
5
6
7
8
                    var formData = new FormData();
                    formData.append("image", files[0]);
                    var MyAppUrlSettings = {
                        MyUsefulUrl: '@Url.Action("ImageCreate", "Home")'
                    }
                    var request = new XMLHttpRequest();
                    request.open('POST', MyAppUrlSettings.MyUsefulUrl);
                    request.send(formData);
Сохраняю в controller ImageCreate данные. Возвращаюсь опять в controller CardCreate.
Вот отрывок из ImageCreate:
C#
1
2
3
4
5
6
7
8
9
10
        [HttpPost]
        public ActionResult ImageCreate(HttpPostedFileBase image)
        {
             ........................................................................
             string fileName = Path.GetFileName(image.FileName);
             ........................................................................
             Session["MainFoto"] = @"/images/" + fileName;
 
             return RedirectToAction("CardCreate");
         }
В controller CardCreate формирую данные для вывода во view CardCreate.
Отрывок из controller CardCreate
C#
1
2
3
4
5
6
7
8
        public ActionResult CardCreate()    
        {
            ViewBag.CardCurrent = new Card();
 
             ViewBag.CardCurrent.PhotoPath = Session["MainFoto"].ToString();
 
            return View();
        }
Отрывок из view CardCreate:
C#
1
2
        <img id="change-cropImage" src="@ViewBag.CardCurrent.PhotoPath" style="max-width:100%;margin-op:12px;
                                                                               width:100%;" class="img img-thumbnail img-responsive image">
Но новое изображение отображается только когда я принудительно в браузере обновляю страницу. Понятно, что это происходит из-за того, что я перехожу в controller CardCreate через js. Подскажите, пожалуйста, что мне делать.
Или как принудительно программно обновляю страницу.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.10.2019, 22:16
Ответы с готовыми решениями:

Как обновить страницу или файл проекта?
Добрый день. У меня возникает периодически ситуация, когда я правлю страницу css и(или) cshtml а обновление происходит только через...

Как создать дочернюю страницу и из неё обновить главную?
Допустим, имеется какая то информация на странице подлежащая редактированию, по нажатию кнопки должна открываться новая страница в новой...

Сохранение состояния html страницы после нажатия в браузере на кнопку 'обновить страницу'
Здравствуйте, имеется view на которой имеется форма с полем ввода даты, также имеется поле ввода тегов (в этом поле используется...

3
 Аватар для IamRain
4693 / 2701 / 734
Регистрация: 02.08.2011
Сообщений: 7,226
22.10.2019, 00:55
Цитата Сообщение от SergRud Посмотреть сообщение
Вот отрывок из js view CardCreate:
Если вы уже находитесь во вьюхе CardCreate и вам известно имя файла и правило формирования пути к нему, то нужно просто дождаться ответа от request.send(formData); и установить картинке src в '/images/' + files[0].name
Раз уж вы уже используете ajax, то надо идти до конца.
Коней на переправе не меняют. (С)

Добавлено через 4 минуты
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var formData = new FormData();
                    formData.append("image", files[0]);
                    var MyAppUrlSettings = {
                        MyUsefulUrl: '@Url.Action("ImageCreate", "Home")'
                    }
                    var request = new XMLHttpRequest();
 
                    request.open('POST', MyAppUrlSettings.MyUsefulUrl);
                    request.onload = function(e) {
                    if (requestreadyState === 4) {
                    if (request.status === 200) {
                            // тут установить src для картинки
                             } else {
                                 console.error(request.statusText);
                       }
                       }
                };
                    request.send(formData);
Добавлено через 2 минуты
И не нужна никакая порнография с редиректами и уж тем более сохранением в сессию. А где вы удаляете из сессии данные?
0
0 / 0 / 0
Регистрация: 10.10.2019
Сообщений: 35
22.10.2019, 07:27  [ТС]
IamRain, огромнейшее спасибо ! Я только учусь и мне очень нравится разбираться. А храню в сессии не для того, чтобы вывести потом на экран, а для того, что эти изображения мне понадобятся в дальнейшем.
0
0 / 0 / 0
Регистрация: 10.10.2019
Сообщений: 35
22.10.2019, 18:47  [ТС]
IamRain, я немного подредактировал код js. Вот что получилось. Код работает:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
                    fname = '/images/' + files[0].name;
                    var cropData = cropper.getData(true);
 
                    var formData = new FormData();
                    formData.append("image", files[0]);
                    var MyAppUrlSettings = {
                        MyUsefulUrl: '@Url.Action("ImageCreate", "Home")'
                    }
                    var request = new XMLHttpRequest();
                    request.onreadystatechange = stateChange;
                    request.open('POST', MyAppUrlSettings.MyUsefulUrl);
                    request.send(formData);
 
                    function stateChange(event) {
                        if (event.target.readyState === 4) {
                            if (event.target.status === 200) {
                                document.getElementById('change-cropImage').src = fname;
                            }
                            else {
                                alert("Системная ошибка.", "Ошибка");
                            }
                        }
                    }
Добавил переменную fname оператор и функцию:
C#
1
request.[B]onreadystatechange[/B] = stateChange;
Т.к. появлялась ошибка, что не определен onreadystatechange.
Сейчас все работает хорошо. Может кому-то понадобится.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.10.2019, 18:47
Помогаю со студенческими работами здесь

Как обновить главную страницу из фрейма
Доброе все утром. Помоги пожалуйста, есть главная страница на которой присутствует фрейм, в котором по нажатию на кнопку меню, главной...

Какая функция принудительно вызовет новую страницу по указанному URL?
Какая существует функция чтоб открыть другую страницу aspx по заданной URL (одна из Форм веб-сайта) прямо из ButtonClick метода? ...

Как избежать повторного внесения данных в БД при нажатии обновить страницу
Всем пт! В PHP эта проблема решалась проверкой метода запроса страницы. Тут при нажатии f5 (обновить стр.) проверка типа: if...

Обновить страницу, выводящую данные, при обновлении базы данных
Как правильно реализовать такой функционал ?

Как обновить страницу
ПРивет)) Как мне одновить страницу например через 10 сек после того как например пхп зайдет в какують часть кода. Например: if(){ ...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru