Как передать несколько параметров в методы Get в контроллере MVC 6. Например, я хочу иметь что-то вроде следующего.
[Route("api/[controller]")]
public class PersonController : Controller
{
public string Get(int id)
{
}
public string Get(string firstName, string lastName)
{
}
public string Get(string firstName, string lastName, string address)
{
}
}
Так что я могу запросить вроде.
api/person?id=1
api/person?firstName=john&lastName=doe
api/person?firstName=john&lastName=doe&address=streetA
c#
asp.net-core
asp.net-core-routing
Mstrand
источник
источник
Почему бы не использовать только одно действие контроллера?
Другой вариант - использовать маршрутизацию атрибутов, но тогда вам потребуется другой формат URL:
источник
Чтобы проанализировать параметры поиска из URL-адреса, вам необходимо аннотировать параметры метода контроллера
[FromQuery]
, например:источник
[HttpGet]
аннотации, различные имена методов и конкретный маршрут[Route]
- теперь маршруты должны быть полностью явными, что устраняет несколько возможных проблем.Я думаю, что проще всего использовать
AttributeRouting
.источник
int paramOne, string paramTwo
Я бы предложил использовать в качестве аргумента отдельный объект dto:
Dotnet сопоставит поля с вашим объектом.
Это упростит передачу ваших параметров и приведет к более четкому коду.
источник
Чтобы вызвать get с несколькими параметрами в ядре веб-API
источник
Чтобы добавить более подробную информацию о перегрузке, о которой вы спрашивали в своем комментарии после другого ответа, вот резюме. Комментарии в
ApiController
шоу показывают, какое действие будет вызываться с каждымGET
запросом:Для этого вам понадобится только один маршрут, если вы задаетесь вопросом:
и вы можете протестировать все это с помощью этого представления MVC или чего-то подобного. Да, я знаю, что вы не должны смешивать JavaScript с разметкой, и я не использую бутстрап, как обычно, но это только для демонстрационных целей.
источник
NB-Я удалил FromURI. Тем не менее, я могу передать значение из URL-адреса и получить результат. Если кто-то знает преимущества использования fromuri, дайте мне знать
источник
Вы можете просто сделать следующее:
Если вам нужно получить доступ к каждому элементу отдельно, просто обратитесь к
Request.Query
.источник
Методы должны быть такими:
Обратите внимание, что второй метод возвращает массив объектов, а имя контроллера указано в plurar (Persons not Person).
Итак, если вы хотите получить ресурс по идентификатору, это будет:
если вы хотите брать объекты по некоторым критериям поиска, таким как имя и т. д., вы можете выполнить поиск следующим образом:
И двигаясь вперед, если вы хотите принимать заказы этого человека (например), это должно быть так:
И метод в том же контроллере:
источник
источник
Самый простой способ,
Контроллер:
Запрос почтальона:
Пункт обучения: Контроллер принимает точный образец запроса.
источник