Я столкнулся с этой проблемой сам, и мне было сложно определить наиболее оптимальное решение, поэтому я решил добавить свой краткий опыт в разговор.
В режиме отладки я прокрутил все свойства запроса; в моем случае я нашел значение QueryString, которое я искал, в HttpContext.Request.UrlReferrer.Query
. Кажется, причина этого в том, что я нажал на Html.ActionLink
со страницы, которой принадлежало это значение QueryString, и это подтолкнуло меня к обработчику MVC ActionResult
, который технически рассматривается как отдельная страница ( только что определенная HttpContext
), даже если она не отображается как таковая на URL-адресе в браузере во время отладки.
Дальнейшие исследования показывают, что Microsoft предпочитает решение этой проблемы - просто передать свое значение по цепочке, когда вы вызываете обработчик ... но синтаксис для достижения этой цели, возможно, не так ясен так, как это должно быть. Вместо этого, анализ вашего значения из UrlReferrer
, кажется, работает очень хорошо, даже если для достижения вашего значения требуется одна или две дополнительные строки кода. Например, самый базовый сценарий с одним значением, переданным в QueryString, может выглядеть примерно так:
String query = HttpContext.Request.UrlReferrer.Query;
String myValue = query.Split('=')[1];