Я хочу перенаправить на другое действие в том же контроллере и передать одно значение параметра. У меня есть этот код:Перенаправление на другое действие в том же контроллере и передача некоторых данных asp.net mvc3
public ActionResult Index()
{
}
public ActionResult SomeAction()
{
if (isFailed)
{
// Redirect to Index Action with isFailed parameter so that some message gets displayed on Index page.
}
}
Я читал об использовании TempData
но мой сеанс только для чтения (для некоторой цели), таким образом, я, если я сохранить данные в TempData
в SomeAction
, это не помогает, так как TempData
пусто в Index
действия ,
Еще одна вещь, которую я пробовал, заключается в использовании RedirectToAction("Index","Test", new { param = isFailed})
в return
выписке из SomeAction
. Это работает, и я могу получить доступ к param
в Index
действию с использованием Request.QueryString['param']
, но проблема с этим адресом теперь становится /AreaName?param=true
, где я хочу, чтобы это было /AreaName/Test/
.
Это моя карта маршрутов:
context.MapRoute(
"default",
"AreaName/{controller}/{action}/{param}",
new { controller="Test", action = "Index", param=UrlParameter.Optional },
);
Я представляю формы с помощью «пост» от MyJS.js к SomeAction
.
Есть ли альтернатива/метод обхода пути для этого? В двух словах, я хочу, чтобы эти три вещи:
- Перенаправление на
Index
действие. - Передайте значение
param
отSomeAction
доIndex
. - Держите URL:
http://localhost/AreaName/Test/
Как я уже говорил, я не могу использовать TempData, потому что мое состояние сеанса только для чтения, а временные данные используют сеанс по умолчанию для хранить данные. Мы можем переопределить это поведение, но это требует переопределения поставщика по умолчанию, который снова не может меняться в моем коде. Для части URL я не хочу, чтобы параметр запроса отображался в строке url. Как это можно сделать? – ezile
Я думаю, что вы добавили это к ur questn после того, как я ответил на это. –
Нет, это было упомянуто только ранее. – ezile