Обзор: в настоящее время я пытаюсь создать форму создания учетной записи. Форма отображается на другой бритвенной странице. Все работает правильно, форма отображается, отправляет данные формы контроллеру, отправляет данные классу, выполняет все действия с БД, но затем по завершении предыдущих пунктов программа пытается найти страницу «CreateAccount.something», когда все, что я хочу, это пока чтобы вернуть исходное представление при ответном вызове.
В указанном проекте форма отображается через: @RenderPage ("~ / Views / Home / AccountCreationForm.cshtml")
Форма:
@model SuperDuperProject.Models.AccountCreationModel // AccountCreationModel is only a class file containing the necessary variables
...
@using (Html.BeginForm("CreateAccount", "Home", FormMethod.Post))
{
<table cellpadding="0" cellspacing="0">
...
@Html.TextBoxFor(m => m.name)
...
<input type="submit" value="Submit"/>
</table>
}
Файл контроллера (HomeController.cs):
...
public ActionResult UserLogin() // the page containing the form
{
return View();
}
[HttpPost]
public ActionResult CreateAccount(AccountCreationModel ACM)
{
Console.WriteLine("CreateAccount within HomeController");
Helpers.CreateAccount a = new Helpers.CreateAccount(...);
a.AccountCreationQuery();
return Index(); // ********** Doesn't seem to operate correctly **********
}
Вместо того, чтобы возвращать Index () или что-то там размещенное, программа пытается найти несуществующее представление CreateAccount.
Что мне не хватает, чтобы я мог просто вернуться на нужную страницу, например на индекс?
Будем очень благодарны любой помощи.
2 ответа
[HttpPost]
public ActionResult CreateAccount(AccountCreationModel ACM)
{
Console.WriteLine("CreateAccount within HomeController");
Helpers.CreateAccount a = new Helpers.CreateAccount(...);
a.AccountCreationQuery();
return RedirectToAction("Index");
// return Redirect("Home/Index"); alternatively can use Redirect
}
Вы можете рассмотреть возможность использования RedirectToAction
или Redirect
.
RedirectToAction
возвращает браузеру ответ HTTP 302, который заставляет браузер делать запрос GET для указанного действия. Redirect
принимает параметр URL строкового типа и перенаправляет на указанный URL.
Прочтите этот пост для получения дополнительной информации: https://www.codeproject.com/ Статьи / 595024 / Контроллеры и действия в ASP-NET-MVC
Попробуйте этот код
public ActionResult UserLogin() // the page containing the form
{
return View();
}
[HttpPost]
public ActionResult CreateAccount(AccountCreationModel ACM)
{
Console.WriteLine("CreateAccount within HomeController");
Helpers.CreateAccount a = new Helpers.CreateAccount(...);
a.AccountCreationQuery();
return View("Index"); //index is the view here. You can define the view //name which you want to return from this controller action
}
По умолчанию контроллер ищет имя представления как имя действия контроллера, поэтому он пытается найти представление CreateAccount, поскольку имя действия контроллера - CreateAccount.
Новые вопросы
asp.net-mvc
ASP.NET MVC Framework - это платформа и инструмент веб-приложений с открытым исходным кодом, которые реализуют версию шаблона модель-представление-контроллер (MVC), адаптированную к веб-приложениям и построенную на основе технологии ASP.NET.