2010-09-17 4 views
0

Когда пользователь нажимает на ссылку, я хочу зарегистрировать некоторую информацию. Я не могу выполнить запрос AJAX, потому что если они нажмут на ссылку, страница выгрузится (поскольку они перейдут на новую страницу), и я не хочу заставлять их оставаться на странице до синхронного события отделки.Глобальный параметр маршрутизации в ASP.NET MVC

Итак, у меня была идея добавить параметр к URL-адресу. То есть URL будет actual/action?actualParams&infoIWantToLog=data. Затем я мог бы отключить информацию, которую я хочу зарегистрировать, зарегистрировать, а затем передать свой URL-адрес действию, на которое они действительно хотели перейти. Возможно ли это с маршрутизацией MVC?

+0

«если они щелкнули по ссылке, страница выгрузится» - как это сделать? Обычная ссылка AJAX не обновляет/перезагружает/не выгружает страницу. – bzlm

+0

@bzlm: право, это просто простая ссылка. Некоторые из нас дедов все еще используют их: P – Xodarap

ответ

2

Обычно URL-адреса отслеживания отправляют пользователя на определенную страницу (или действие в этом случае), скажем,/Трек, а затем передают параметры в журнал (включая URL-адрес для отправки пользователя) через запрос.

Например, перейдите в Google и выполните поиск по сроку. Щелкните правой кнопкой мыши по результату и скопируйте URL-адрес. Теперь вставьте его в Блокнот. Вы увидите, что это не прямая ссылка на результат поиска, а скорее на страницу отслеживания Google. Например, при поиске asp.net и нажмите на первый результат (для www.asp.net), это реальный URL Google посылает мне:

http://www.google.com/url?sa=t&source=web&cd=2&ved=0CDcQFjAB&url=http%3A%2F%2Fwww.asp.net%2Fget-started&rct=j&q=asp.net&ei=BauTTIuCDIaWsgOHgo3ACg&usg=AFQjCNGR6cOBKtUWIKZs9jnpz0vYRDu_EA&sig2=r2q31zniuxHQ4Y6BIoudow&cad=rja

Эта страница регистрирует мой нажмите, а затем перенаправляет меня на сайт www.asp.net.

Ваше действие Track будет делать то же самое. Вы должны создать контроллер трека с действием индекса, а затем вы должны проанализировать запрос, занести в журнал информацию, а затем вернуть RedirectResult URL-адресу, который вы хотите отправить пользователю.

Имеют смысл?

+0

Я предполагаю, что это имеет смысл, хотя это раздражает, я не могу просто справиться с этим с помощью маршрутизации. Благодаря! – Xodarap

+0

@Xodarap: Полагаю, я не понимаю, что вы подразумеваете под «просто справляйтесь с этим с помощью маршрутизации». Маршрутизация - это всего лишь способ сопоставить входящий URL-адрес с действием в контроллере. –

+0

Я хочу сопоставить URL-адрес на два действия (дорожка и фактическое действие). Возможно, маршрутизация - плохая парадигма; лучшим примером могут быть атрибуты безопасности, с которыми вы можете украсить действия. Безопасность и ведение журналов - это сквозные проблемы, и было бы неплохо, если бы был простой способ справиться с ними обоими. – Xodarap

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