У меня проблема с RedirectToAction в приложении ASP.net MVC
Объяснение того, что должно делать мое приложение:
- На веб-странице «Home / AddItem» Пользователь вводит текст в текстовое поле (в форме)
- Пользователь нажимает кнопку «Сохранить»
- Сработал контроллер 'AddItem', который украшен атрибутом [HttpPost]
- В этом контроллере я сохраняю заполненный объект-модель в моем Web
Сервис
Я хочу выполнить «возврат RedirectoAction» на другой контроллер,
но это не работает:
return RedirectToAction («Домой», «Индекс»);
Фактически отображает страницу, на которой пользователь заполнял форму. Оставляет пару пустых строк. Затем я вижу иностранную строку «Загрузка», после чего отображается страница «Домой / Индекс».
И URL-адрес в браузере содержит URL-адрес предыдущей страницы (/ Home / AddItem), а не тот, который я ожидаю (/ Home / Index)

Я пытался заставить мой контроллер «AddItem» возвращать представление «AddItem», но возникает та же проблема: прежняя страница находится вверху страницы, и к ней добавляется дублирующаяся страница «AddItem» !!
Я пробовал RedirectToURL, RedirectToRoute и т. Д. Безрезультатно !!
Единственное, что заставляет RedirectToAction («Home», «Index») работать, это не рендерить представление «AddItem» в макет. Но это не решение для нашего проекта !!
Вот фрагменты кода моей страницы _ViewStart.cshtml и контроллера AddItem:
_ViewStart.cshtml
@{
if (this.ViewContext.RouteData.Values["controller"].ToString() == "Login") {
Layout = "~/Views/Shared/_LayoutLogin.cshtml";
}
else {
Layout = "~/Views/Shared/_Layout.cshtml";
}
}
[Authorize]
public ActionResult AddItem(DateTime? date) {
if (!ValidateUserAuthentication(out User user)) {
return Redirect("~/Login/Login");
}
ViewBag.CurrentDayOfWeek = myService.GetCurrentDayOfWeek();
return View();
}
[HttpPost]
public ActionResult AddItem(Transaction myTransaction) {
// code that saves 'myTransaction' via my Web Service
// to make things simple, I return the 'AddItem' view
// but it doesn't work : it appends a new view to the former view
return View();
}