2010-08-17 2 views
0

Я использую T4MVC для перенаправления на другое действие return RedirectToAction (MVC.MyController.MyAction()) ;. В результате он получает запрос на получение.MVC 2.0 Post Form для действия вместо перенаправления на действие

Есть ли способ сделать запрос от контроллера. Я хочу сохранить все то же самое, но только сделать пост вместо этого. Я не могу найти для этого какие-либо методы. Я нашел один почтовый помощник здесь http://geekswithblogs.net/rakker/archive/2006/04/21/76044.aspx, но я не могу передать любые значения, которые мне нужны, используя этот пост-помощник. Я пытался передать значения через TempData, но они не приходят, когда я использую этот помощник. Может быть, у кого-нибудь есть идеи?

Причина, по которой я хочу сделать это, потому что когда пользователь приходит от одного контроллера к другому, а затем, если пользователь нажимает обновление или просто нажимает кнопку ввода в адресной строке браузера, страница будет ломаться.

Должен ли я использовать сеанс по этой причине?

ответ

0

только способ сделать сообщение, имея форму и делать отправку на эту форму либо с помощью кнопки отправки, либо с помощью javascript, любая информация, которую вы хотите передать этому действию, должна быть в этой форме, и вы найдете все, FormCollection (надеюсь, что я правильно записал).

1

RedirectToAction всегда будет выполнять GET, никогда не POST (он возвращает HTTP 302 в браузер, который затем выдаст запрос GET).

Чтобы сохранить данные через перенаправление, если это данные, которые могут быть легко представлены в виде строки и сохранены в строке запроса, вы можете просто добавить ее к значениям маршрута перенаправления. , например.

return RedirectToAction("Search", new { searchString = "whatever" }); 

Если это сложный тип, вам необходимо его сохранить в TempData. Ряд других вопросов о StackOverflow (например, this) дают информацию о том, как это сделать.

Если повторное хранение и чтение из TempData через ваше приложение оскорбляет ваш смысл кода, вы можете инкапсулировать его с помощью атрибута PassParametersDuringRedirect и общего RedirectToAction, доступного в MvcContrib project. Некоторые детали этого метода доступны here.

Смежные вопросы