Как удалить параметры строки запроса из URL? - PullRequest
2 голосов
/ 23 декабря 2009

Предположим, у меня есть ссылка http://www.somesite.com/file.aspx?a=1&b=2

А теперь я хочу удалить все параметры, так что получается:

http://www.somesite.com/file.aspx

Или я могу удалить только 1 из параметров, например

http://www.somesite.com/file.aspx?b=2

Есть ли способ сделать это в C #? Происходит то, что я захожу с другой страницы с параметром, называемым edit в URL, но когда страница отправляет сообщение обратно, параметр edit все еще там, поэтому он все еще думает, что он находится в режиме редактирования. Пример:

Пользователь A переходит на страницу one.aspx и нажимает на ссылку редактирования. Они принимаются в two.aspx? Edit = true. Во время загрузки страницы он видит, что значение параметра строки запроса не равно нулю, и переводит содержимое в режим редактирования. Как только пользователь завершит редактирование, страница обновляется, но URL-адрес по-прежнему two.aspx? Edit = true и сохраняет содержимое в режиме редактирования, хотя на самом деле оно должно быть two.aspx

Ответы [ 7 ]

11 голосов
/ 23 декабря 2009

Request.Querystring - коллекция только для чтения. - Вы не можете изменить это.

Если вам нужно удалить или изменить параметр в строке запроса, единственным выходом является запуск нового запроса GET с обновленной строкой запроса - это означает, что вам придется выполнять Response.Redirect с обновленным URL-адресом. Это приведет к потере состояния просмотра текущей страницы.

2 голосов
/ 09 июля 2013

Используйте свойство PostBackUrl, например:

<asp:Button ID="DoneEditingButton" runat="server" Text="Done editing" PostBackUrl="~/two.aspx" />
1 голос
/ 11 августа 2014

если у вас есть только строка, вы можете использовать:

strinULR.Split('?').First();

или

strinULR.Split('?').FirstOrDefault();
1 голос
/ 23 декабря 2009

Как насчет проверки Page.IsPostBack, чтобы увидеть, является ли текущий запрос обратной передачей или нет?

1 голос
/ 23 декабря 2009

Когда вы закончите редактирование, вы отправляете сообщение обратно, поэтому просто определите действие для публикации в two.aspx, вместо того, чтобы просто отправлять обратно себе таким образом, чтобы оно пропало из параметров получения.

0 голосов
/ 12 октября 2017

Попробуйте что-нибудь подобное.

if (url.Contains("?"))
            url = url.Substring(0, url.IndexOf("?"));

В этом примере я проверяю, содержит ли URL даже строку запроса, и если да, вычитает получение «левой части» строки перед символом?.

0 голосов
/ 10 апреля 2015

Поздно, но вы можете сделать это, чтобы удалить строку запроса из URL без другого запроса GET. http://www.codeproject.com/Tips/177679/Removing-Deleting-Querystring-in-ASP-NET

...