У меня есть ActionLink, который вызывает мой общедоступный ActionResult, и я бы хотел, чтобы он вернулся на страницу, из которой он был вызван, но как?
ActionResult вернется на страницу, которая называется
Ответ 1
Есть несколько трюков, которые вы можете использовать для этого.
Самый простой - это...
return Redirect(HttpContext.Request.UrlReferrer.AbsoluteUri);
AbsoluteUri может не дать вам точный путь, который вы ищете, но UrlReferrer должен иметь требуемую имформацию. Redirect возвращает подкласс ActionResult, поэтому он является допустимым возвращаемым значением.
Другая идея состоит в том, чтобы основать местоположение перенаправления на сохраненные значения. Это полезно, когда вы собираетесь делать несколько запросов до того, как хотите перенаправить, например, когда вы проверяете форму и показываете проблемы проверки в первом ответе. Другая ситуация будет, когда реферер не является локальным сайтом. В любом случае ваш реферер не будет тем, что вы хотите, и вам нужно будет найти правильное местоположение из другого места.
Конкретные реализации включают использование скрытого поля ввода в вашей форме, состояние сеанса, вытягивание значения дискриминатора из ваших данных маршрута или даже просто более постоянное значение, например HttpContext.Request.ApplicationPath.
Удачи.
Ответ 2
Имейте в виду, что из-за отсутствия состояния в Интернете ваш ActionResult не "вызывается" из вашего ActionLink, а просто URL-адрес, который запросил пользовательский агент.
Из-за этого единственный реальный "встроенный" способ, которым вы можете знать, откуда пришел этот пользователь, - проверить заголовки HTTP-запроса, чтобы увидеть, что указала эта страница:
string referrer = Request.Headers["referer"];
Затем вы будете отвечать за разбор метода Action из этого URL-адреса, если вы собираетесь называть его напрямую. Имейте в виду, что этот реферер не может быть ссылкой на вашем собственном сайте.