Как вы используете строки запроса с маршрутизацией ASP.NET?

StackOverflow https://stackoverflow.com/questions/205582

Вопрос

Новая маршрутизация ASP.NET отлично подходит для простых URL-адресов в стиле пути, но если вы хотите использовать URL-адрес, например:

http://example.com/items/search.xhtml?term=Text+to+find&page=2

Нужно ли использовать параметр catch all с проверкой?

Это было полезно?

Решение

Любые элементы данных представления, которые не указаны в маршруте, автоматически сопоставляются со строкой запроса, поэтому, если вы сопоставляете «items/search.xhtml» с действием:

Search(string term, int page)

Тогда вы должны получить результаты, которые ищете.

Другие советы

Вы также можете сопоставить параметры строки запроса с маршрутами, если вы хотите просто захватить все, что вам нужно, чтобы добавить такой параметр:

{*contentUrl}

Это заполнит остальную часть URL-адреса в эту переменную.

У меня также возникли проблемы с передачей закодированного URL-адреса на маршрут в качестве параметра маршрута.

Вы не можете использовать символы в кодировке URL-адреса в URL-адресе, но можете в строке запроса.

Поэтому мне нужно было, чтобы мой маршрут также содержал элемент строки запроса.

Скажем, у меня есть маршрут:

MapPageRoute("myroute", "myroute/{x}", "~/routehander.aspx")

Но я хочу это в форме:

http://mywebsite.com/myroute/{x}?url=myurl

Мы можем сделать это:

Dim x as integer = 12
Dim rvd As New Routing.RouteValueDictionary
rvd.Add("x", x)
rvd.Add("url", Server.UrlEncode("/default.aspx"))
HttpContext.Current.ApplicationInstance.Response.RedirectToRoutePermanent("myroute", rvd)

Это перенаправит нас на следующий URL:

http://mywebsite.com/myroute/12?url=%252fdefault.aspx

Вы все еще можете использовать Request.QueryString["some_value"];

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top