¿Cómo puedo pasar múltiples parámetros a los métodos Get en un controlador MVC 6? Por ejemplo, quiero poder tener algo como lo siguiente.
[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)
{
}
}
Entonces puedo consultar como.
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
fuente
fuente
¿Por qué no usar solo una acción del controlador?
Otra opción es usar el enrutamiento de atributos, pero luego necesitaría tener un formato de URL diferente:
fuente
Para analizar los parámetros de búsqueda de la URL, debe anotar los parámetros del método del controlador con
[FromQuery]
, por ejemplo:fuente
[HttpGet]
anotaciones adicionales , los diferentes nombres de métodos y la ruta específica en[Route]
- las rutas deberían ser completamente explícitas ahora, lo que elimina algunos problemas posibles.Creo que la forma más sencilla es simplemente usar
AttributeRouting
.fuente
int paramOne, string paramTwo
Sugeriría usar un objeto dto separado como argumento:
Dotnet asignará los campos a su objeto.
Esto hará que sea mucho más fácil pasar por sus parámetros y dará como resultado un código mucho más claro.
fuente
Para llamar a get con varios parámetros en web api core
fuente
Para agregar más detalles sobre la sobrecarga sobre la que preguntó en su comentario después de otra respuesta, aquí hay un resumen. Los comentarios en el
ApiController
muestran qué acción se llamará con cadaGET
consulta:Solo necesitaría una única ruta para esto, en caso de que se preguntara:
y podría probarlo todo con esta vista MVC, o algo similar. Sí, sé que se supone que no debes mezclar JavaScript con marcado y no estoy usando bootstrap como lo harías normalmente, pero esto es solo para fines de demostración.
fuente
NB: eliminé FromURI. Aún así, puedo pasar el valor de la URL y obtener el resultado. Si alguien sabe benfifts usando fromuri, hágamelo saber
fuente
Simplemente puede hacer lo siguiente:
Si necesita acceder a cada elemento por separado, simplemente consulte
Request.Query
.fuente
Los métodos deberían ser así:
Tenga en cuenta que el segundo método devuelve una matriz de objetos y el nombre del controlador está en plurar (Persons not Person).
Entonces, si desea obtener el recurso por id, será:
si desea tomar objetos por algunos criterios de búsqueda como el nombre, etc., puede realizar una búsqueda como esta:
Y avanzando, si quieres tomar las órdenes de esa persona (por ejemplo), debería ser así:
Y método en el mismo controlador:
fuente
fuente
La forma más sencilla
Controlador:
Solicitud del cartero:
Punto de aprendizaje: el controlador aceptará la solicitud de patrón exacto.
fuente