Как преобразовать параметры строки запроса, чтобы они выглядели как части каталога с ASP. NET Core? - PullRequest
0 голосов
/ 03 августа 2020

У меня есть приложение, написанное с использованием C# поверх инфраструктуры ASP. NET Core 3.1.

Обычно запрос Http Get генерирует URL-адрес с параметрами, которые выглядят примерно так это

/ for_sale / Virginia_Heights / WV? Bed = 3 + & type = MULTI-FAMILY, SINGLE-FAMILY_HOME_type

Однако я хочу способ преобразовать предыдущий URL-адрес, чтобы он выглядел примерно так:

/ for_sale / Virginia_Heights / WV / 3 + _beds / MULTI-FAMILY, SINGLE-FAMILY_HOME_type

Trulia сделала что-то подобное на своем веб-сайте (например, https://www.trulia.com/for_sale/Virginia_Heights, WV / 3p_beds / MULTI-FAMILY, SINGLE-FAMILY_HOME_type / )

Если вы go к предыдущему URL-адресу и измените фильтр, вы заметите, что любой выбранный вами фильтр добавит этот фильтр к URL-адресу в виде каталога без добавления ?=... параметров запроса.

Я предполагаю, что создание URL-адреса и получение данных происходит с использованием техники AJAX с помощью из Javascript. Не так ли? Или, может быть, есть лучший способ обработки генерации URL-адресов? *

Вопрос Как я могу создать маршрут в ASP. NET Ядре, который позволил бы мне обрабатывать такой запрос со многими необязательными параметрами, чтобы он выглядел, как в примере выше?

Ответы [ 2 ]

0 голосов
/ 10 августа 2020

Это можно сделать, написав метод контроллера, как показано ниже. Мы можем указать, что параметры кроватей и типа взяты из маршрута, используя атрибут [FromRoute].

[Route("/for_sale/Virginia_Heights,WV/{beds}/{type}]
public IActionResult GetPropertyInfo([FromRoute]string beds, [FromRoute]string type)
{
   // do something
}

We can also specify other model into it using [FromBody] atrribute.

[Route("/for_sale/Virginia_Heights,WV/{beds}/{type}]
public IActionResult GetPropertyInfo([FromRoute]string beds, [FromRoute]string type,[FromBody]Home model)
{
   // do something
}
0 голосов
/ 04 августа 2020

Вы должны установить маршрут следующим образом:

[Route("/for_sale/Virginia_Heights/WV/{beds}/{type}]
public IActionResult GetPropertyInfo(string beds, string type)
{
   // .....
}

/ for_sale / Virginia_Heights / WV, конечно, не является частью ответа. Это может быть ваш домен и другая структура URL.

...