2017-02-22 8 views
0

Прежде чем задать этот вопрос, я даже не уверен, что я использую строку запроса (я так бессовестен в этом, что у меня есть является результатом какого-то другого запутанного исследования StackOverFlow). Это параметр, который я передаю из своего средства просмотра отчетов SSRS в мое приложение с помощью гиперссылки. Он работает, и все грандиозно, за исключением того, что я хотел бы сразу очистить его от URL.Я хотел бы очистить свой запрос после использования его на загрузке страницы C#

http://10.155.54.101/Update?CurrencyId=67 

И я получаю параметр с этой логикой при загрузке страницы.

if (Request.Params["CurrencyId"] != null) 
    int CurrencyId = int.parse(Request.Params["CurrencyId"]); 

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

С помощью другого переполнения стека Ответ: Clear QueryString on PostBack, я попытался очистить запрос с помощью следующего кода.

Request.Params.Clear(); 

Но я получаю коллекцию только для чтения, которая адресована в вопросе переполнения стека выше. Поэтому я пытаюсь использовать System.Reflection, чтобы изменить свойство только для чтения коллекции с помощью следующего кода.

PropertyInfo Isreadonly = typeof(System.Collections.Specialized.NameValueCollection).GetProperty("IsReadOnly", BindingFlags.Instance | BindingFlags.NonPublic); 
       Isreadonly.SetValue(Request.Params, false, null); 
       Request.Params.Clear(); 

Я не получаю ошибку, но ничего не удаляется, так что я не мог быть ссылки на строку запроса должным образом из-за однако чёрта Request.Params работы.

Может ли кто-нибудь подтолкнуть меня в правильном направлении? Мне жаль, что я не знаю, как это сделать.

+0

У вас есть особая причина, почему запрос не приемлем? Есть много веских причин в любом случае. Просто любопытно, и он также может направить ответы здесь. – secretwep

+0

Я буду полностью честен, я пытаюсь устранить ошибку, которую я действительно не понимаю. У меня есть приложение со страницей обновлений, которая обновляет запись в моей базе данных, и она извлекает и обновляет записи. У меня есть отчет SSRS, который имеет гиперссылку на каждой записи, чтобы перейти на мою страницу обновления, и заполняет поля и выпадающие списки данными записей. Но данные полностью устраняются с точки зрения точности (в частности, для многих-многих отношений). Обновления также не публикуются.Я читал другие сообщения, в которых querystring имеет какое-то отношение к их проблемам. – David

+0

Простите меня, вы имеете в виду «вытащил _incompletely_»? Иногда строка запроса является единственным способом получить данные из одного приложения в другое, и это операция GET. Я подозреваю, что проблема кроется в другом месте. У вас есть контроль над обоими приложениями или только один. Более подробная информация в ваших вопросах может помочь вам получить ответ. – secretwep

ответ

2

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

Когда вы говорите «он задерживается после отправки обновления», вы имеете в виду, что пользователь выбирает валюту и перенаправляется на страницу с помощью этой строки запроса? Если бы вы могли изменить это действие на POST вместо GET? Затем вы можете поместить currencyId в тело POST. Если вы не можете переключить его на POST, то есть несколько идей, перечисленных ниже.

Если вы используете сеанс, вы можете сохранить currencyId в сеансе пользователя. Но это имело бы смысл, если бы вам нужно было использовать это значение для других запросов; поскольку использование сеанса - большое решение, и если вы можете сохранить свой сайт без гражданства, вы должны.

С учетом сказанного существует два жизнеспособных варианта, позволяющих сохранить ваш сайт без гражданства. Если вам нужно это значение для будущих запросов, вы можете сохранить его в файле cookie. Если вам это нужно только по этому запросу, вы можете отправить страницу на URL-адрес без строки запроса, но со значением в теле POST.

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