/ / Usar una plantilla de ruta diferente para el controlador - c #, asp.net-core-mvc, asp.net-core-routing

Use una plantilla de ruta diferente para el controlador - c #, asp.net-core-mvc, asp.net-core-routing

¿Es posible cambiar el nombre del controlador de enrutamiento en MVC? En MVC 5 habría hecho esto:

[RoutePrefix("MySpecialSauce")]
public class ProductsController : Controller
{
[Route("GetBy/{id}")]
public MyObject GetBy(int id)
{
return something(id);
}
}

Ahora todo lo que puedo encontrar es usar el nombre predeterminado de su controlador:

[Route("[controller]")]
public class ProductsController : Controller
{

[HttpGet("GetBy/{id}")]
public MyObject GetBy(int id)
{
return something(id);
}
}

Quiero usar un nombre diferente para mi ruta que el nombre del controlador real. ¿Cómo haces esto?

Respuestas

4 para la respuesta № 1

Puedes hacer lo mismo en Core

[Route("MySpecialSauce")]
public class ProductsController : Controller {

[HttpGet("GetBy/{id:int}")]//Matches GET MySpecialSauce/GetBy/5
public MyObject GetBy(int id) {
return something(id);
}
}

[controller] es un reemplazo de token para ayudar con la plantilla de ruta. No es obligatorio.

Fuente Reemplazo de token en las plantillas de ruta ([controlador], [acción], [área])

Para mayor comodidad, las rutas de atributos admiten el reemplazo de tokens por adjuntando un token entre llaves ([, ]). Los tokens [action], [area]y [controller] será reemplazado por los valores de la nombre de la acción, nombre del área y nombre del controlador de la acción donde el La ruta está definida.