Форум программистов, компьютерный форум, киберфорум
C#: ASP.NET Core
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.63/16: Рейтинг темы: голосов - 16, средняя оценка - 4.63
Vengr
7 / 7 / 1
Регистрация: 10.05.2009
Сообщений: 56
1

Редирект после получения POST запроса

29.08.2012, 16:20. Просмотров 3075. Ответов 8
Метки нет (Все метки)

Всем привет! Есть проблема. Для добавления новых вакансий искользую K-MVC

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
public ActionResult AddVacancy()
{
    var viewModel=new VacancyViewModel();
    viewModel.AllTechnologies = (from t in _serviceClient.GetTechnologies() select t.Name).ToList();
    return View(viewModel);
}
 
[HttpPost]
public ActionResult AddVacancy(VacancyViewModel viewModel)
{
     _serviceClient.AddVacancy(viewModel);
     return Json(viewModel);
}
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@using PerpetuumSoft.Knockout
@model Core.ViewDataModel.VacancyViewModel
@{
    var ko = Html.CreateKnockoutContext();
    ViewBag.Title = "New vacancy";
}
...............................
@using (ko.Html.Form("AddVacancy", "Vacancy", ko.Model))
{
...............................................        
<p>
            <input class="submitButton" type="submit" value="Create" />
        </p>
}
<div>
    @Html.ActionLink("Back to List", "Index")
</div>
 
@ko.Apply(Model)
Все работает хорошо! Но, я хочу редирект на другую страницу после успешного сохранения вакансии:

C#
1
2
3
4
5
6
[HttpPost]
        public ActionResult AddVacancy(VacancyViewModel viewModel)
        {
             _serviceClient.AddVacancy(viewModel);
             return RedirectToAction("Index"); 
        }
И в результате я получу ошибку, поскольку предыдущая страница не получила Ajax.success. Все дело в том, что K-MVC сам генерит скрипты, и я не могу чтото дописать, как я понял. Как мне одолеть ету проблему?

Заранее спасибо!

Добавлено через 4 часа 46 минут
Да, ответов много
Пока решил проблему так, без редиректа

C#
1
2
3
4
5
6
7
8
        [HttpPost]
        public ActionResult AddVacancy(VacancyViewModel viewModel)
        {
 
             _serviceClient.AddVacancy(viewModel);
             viewModel.SavedSaccessfully = true;
             return Json(viewModel);
        }
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@using (ko.If(m => m.SavedSaccessfully))
{
    @ko.Html.Span("NEW VACANCY SAVED TO DATABASE.")
}
 
@using (ko.If(m => m.SavedSaccessfully==false))
{
     using (ko.Html.Form("AddVacancy", "Vacancy", ko.Model))
     {
         <p>@Html.Label("Name: ")            @ko.Html.TextBox(m => m.Name).ValueUpdate(KnockoutValueUpdateKind.AfterKeyDown) </p>
         <p>@Html.Label("Active : ")         @ko.Html.CheckBox(m => m.IsOpen).ValueUpdate(KnockoutValueUpdateKind.Change) </p>
         <p>@Html.Label("English: ")         @ko.Html.DropDownList(m => m.AllLanguageLevels).Value(m => m.EnglishLevel) </p>
         <p>@Html.Label("German: ")          @ko.Html.DropDownList(m => m.AllLanguageLevels).Value(m => m.GermanLevel) </p>
         <p>@Html.Label("Technologies: ")    @ko.Html.ListBox(m => m.AllTechnologies).SelectedOptions(m => m.NeededTechnology) </p>
         <p>
             <input class="submitButton" type="submit" value="Submit" />
         </p>
     }
}
После удачного сохранения модель отсылается обратно, но теперь с флагом SavedSaccessfully, что приводит к исчезновению формы ввода данных и появлению успокаивающей надписи для пользователя.
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.08.2012, 16:20
Ответы с готовыми решениями:

Как вернуть ответ после POST-запроса?
Есть на Azure веб приложение, хочу его использовать для работы с VK API, а точнее для доступа к...

Обработка POST запроса
Добрый день. Я новичок в ASP, подскажите пожалуйста. На странице есть форма &lt;form...

Определение параметров POST запроса
Привет, всем. Нужно определить есть ли в POST запросе к серверу определенный параметр (вроде...

Poloniex отправка POST запроса
Здравствуйте, помогите пожалуйста правильно составить POST запрос согласно документации:...

8
Alligieri
CEO
Эксперт С++
2255 / 1245 / 57
Регистрация: 16.03.2009
Сообщений: 3,588
29.08.2012, 22:15 2
Vengr, ну в принципе - если метод экшена в том же контроллере ничто не мешает вызвать его как метод
C#
1
return Index();
0
Vengr
7 / 7 / 1
Регистрация: 10.05.2009
Сообщений: 56
30.08.2012, 10:57  [ТС] 3
Цитата Сообщение от Alligieri Посмотреть сообщение
Vengr, ну в принципе - если метод экшена в том же контроллере ничто не мешает вызвать его как метод
C#
1
return Index();
Оно то, конечно, так НО! K-MVC сам генерит скрипт отправки данных и он ожидает положительный резалт, а если его нет - браузер выстреливает ошибку, что получил не то, что хотел.

Пока я сделал следующее:

C#
1
2
3
4
5
6
7
8
9
10
        [HttpPost]
        public ActionResult AddVacancy(VacancyViewModel viewModel)
        {
            if(ModelState.IsValid)
            {
                _serviceClient.AddVacancy(viewModel);
                viewModel.SavedSaccessfully = true;
            }
            return Json(viewModel);
        }
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@using (ko.If(m => m.SavedSaccessfully))
{
    @ko.Html.Span("NEW VACANCY SAVED TO DATABASE.")
}
 
@using (ko.If(m => m.SavedSaccessfully==false))
{
     using (ko.Html.Form("AddVacancy", "Vacancy", ko.Model))
     {
         <p>@Html.Label("Name: ")            @ko.Html.TextBox(m => m.Name).ValueUpdate(KnockoutValueUpdateKind.AfterKeyDown) </p>
         <p>@Html.Label("Active : ")         @ko.Html.CheckBox(m => m.IsOpen).ValueUpdate(KnockoutValueUpdateKind.Change) </p>
         <p>@Html.Label("English: ")         @ko.Html.DropDownList(m => m.AllLanguageLevels).Value(m => m.EnglishLevel) </p>
         <p>@Html.Label("German: ")          @ko.Html.DropDownList(m => m.AllLanguageLevels).Value(m => m.GermanLevel) </p>
         <p>@Html.Label("Technologies: ")    @ko.Html.ListBox(m => m.AllTechnologies).SelectedOptions(m => m.NeededTechnology) </p>
         <p>
             <input class="submitButton" type="submit" value="Submit" />
         </p>
     }
}
K-MVC позволяет схитрить и спрятать поле ввода при изменении условий(состояния данных модели). Я прячу форму ввода данных и показываю успокоительное окошко пользователю
0
Alligieri
CEO
Эксперт С++
2255 / 1245 / 57
Регистрация: 16.03.2009
Сообщений: 3,588
30.08.2012, 11:03 4
Vengr, а в чем фишка этого K-MVC? Просто еще одна прослойка на уровне клиента?
0
Vengr
7 / 7 / 1
Регистрация: 10.05.2009
Сообщений: 56
31.08.2012, 15:02  [ТС] 5
Цитата Сообщение от Alligieri Посмотреть сообщение
Vengr, а в чем фишка этого K-MVC? Просто еще одна прослойка на уровне клиента?
Фишка в том, что можно получить сложный, интерактивный функционал страницы без использования JavaScript (фактически он есть, но генерируется он исключительно фреймворком). K-MVC построен на базе knockoutjs. K-MVC использует только knockoutjs, совместим с jQuery. Разработчику не нужно писать гору кода на JavaScript. Для меня ето огромный плюс, т.к. я только недавно перешел с WinForms в веб.
2
Alligieri
CEO
Эксперт С++
2255 / 1245 / 57
Регистрация: 16.03.2009
Сообщений: 3,588
01.09.2012, 00:46 6
Цитата Сообщение от Vengr Посмотреть сообщение
m.SavedSaccessfully==false
а !m.SavedSaccessfully не проще написать?)))
За ответ спасибо, действительно гляжу что интерестный функционал, погляжу как-то
0
Сергей 83
98 / 96 / 15
Регистрация: 28.03.2011
Сообщений: 565
01.09.2012, 23:56 7
только маловато обучающего материала на русском про knockoutJS, как мне кажется
0
Alligieri
CEO
Эксперт С++
2255 / 1245 / 57
Регистрация: 16.03.2009
Сообщений: 3,588
02.09.2012, 00:57 8
Сергей 83, для разработчика английский должен быть как родной)))
0
Сергей 83
98 / 96 / 15
Регистрация: 28.03.2011
Сообщений: 565
02.09.2012, 01:24 9
согласен... хромает он у меня. устал уже от этого
0
02.09.2012, 01:24
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.09.2012, 01:24

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Как получить ТЕЛО post-запроса?
Ситуация. Есть некий скриптец, который обращается к моему АСПу и передает ему зазипованный файл....

WebApi обработка post и put запроса от Angular
Добрый день. У меня есть сервер написанный как отдельное приложение в .Net Core WebApi и клиент...

Формирование post запроса: где брать параметры
Видел несколько примеров для формирования post запроса к сервису translate.google. При...

получения ответа от POST запроса
Добрый день подскажите есть php файл на который прога делает пост запрос в ответ на запрос php...


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

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

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