Мы начали проект с использованием WebForms и разработали довольно сложную портальную систему для размещения хлебных крошек, навигации и так далее. Мы постоянно храним дополнительный параметр идентификатора контекста навигации в URL, чтобы мы могли надежно отслеживать историю пользователя, даже если он использует несколько вкладок или использует кнопки навигации в браузере. Для того чтобы это работало должным образом в WebForms, все не-обратные ссылки должны генерироваться служебными методами портала. Мы получаем ряд преимуществ от использования служебных методов портала, так что это действительно не бремя. А поскольку любые действия, выполняемые на данной странице, будут использовать обратную передачу, URL-адрес не изменяется при выполнении этих действий.
Теперь мы начинаем использовать MVC для некоторых частей нашего сайта, и до сих пор переход был относительно плавным. Я хотел бы убедиться, что наш портал может использоваться должным образом, не мешая. До сих пор мы использовали несколько пользовательских методов расширения HtmlHelper для генерации ссылок между различными страницами (хотя «страниц» на самом деле не существует в MVC, некоторые действия приводят к отображению всей страницы). Это позволяет нам сохранять идентификатор контекста навигации в URL для действий на странице. Однако, чтобы не потерять этот параметр URL, мы используем только запросы AJAX для каких-либо действий на странице. Это лишает нас возможности отвечать на большинство запросов действий с полным просмотром или следовать шаблону Post-Redirect-Get.
Хотя я большой поклонник AJAX и технически не планируем поддерживать браузеры без включенного javascript и т. Д., Я все же хотел бы оставить наши настройки открытыми. Поэтому я хотел бы иметь возможность сделать так, чтобы каждый раз, когда ссылка или форма обрабатывались с помощью встроенных методов HtmlHelper, я мог подключиться к конструкции URL-адреса и добавить идентификатор контекста к параметрам запроса URL-адреса. Есть ли (желательно простой) способ сделать это? Или вы видите другое решение моей проблемы, которое было бы лучше?