Можно ли изменить URL при возврате в то же время?То есть без перенаправления? - PullRequest
5 голосов
/ 22 марта 2011

В ASP.NET MVC у меня есть контроллер, который выглядит примерно так:

public class MyController{
    public ActionResult Index(){
        return View(new MyModel());
    }
    [HttpPost]
    public ActionResult Index(MyModel model){
        //do something
        return View("RegistrationConfirmation", new ConfirmModel());
    }
    [HttpPost]
    public ActionResult RegistrationConfirmation(ConfirmModel model){
        //do something else
        return View();
    }
}

Рабочий процесс пользователя, который я хотел бы иметь, следующий

  • GET индекс страницы. Возвращает представление Index. URL: ~/My
  • POST данные со страницы индекса - возвращает представление RegistrationConfirmation и отправляет пользователя на нужную страницу ~/My/RegistrationConfirmation.
  • Пользователь POST хранит другие данные на странице RegistrationConfirmation, поэтому для их обработки вызывается RegistrationConfirmation.

Прямо сейчас метод действия RegistrationConfirmation никогда не вызывается, потому что после возврата RegistrationConfirmation представления по методу индекса действия URL остается ~/My, поэтому второе сообщение обрабатывается Index(MyModel) методом действия, а не RegistrationConfirmation(ConfirmModel) методом действия.

Как я могу изменить URL-адрес вместе с отправкой представления, чтобы действие контроллера, соответствующее представлению, вызывалось обратно POST? Или есть какой-то другой способ, как гарантировать, что соответствующий контроллер вызывается?


ПРИМЕЧАНИЕ: Я действительно прочитал более 20 вопросов, которые, казалось, были по теме, прежде чем опубликовать этот. Я не думаю, что идеальный ответ на любой из них даст мне решение. Пожалуйста, прочитайте правильно перед голосованием, чтобы закрыть как дубликат.

1 Ответ

3 голосов
/ 22 марта 2011

попробуйте это в представлении RegistationConfirmation

, вы можете легко добавить действие и контроллер, который должен быть указан в команде Html.BeginnForm ...

   <% using(Html.BeginForm("RegistrationConfirmation", "MyController")){%>

    //form elements

   <%}%>

с этим вамиточно определить, какое действие и контроллер будет называться

...