Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

959
Visualizações
¿Por qué derivar de ControllerBase vs Controller para ASP.NET Core Web API?

Estoy siguiendo este tutorial para crear una API web de ASP.NET Core, y en la sección sobre cómo agregar un controlador, el tutorial brinda un código para reemplazar el código de plantilla para un controlador. Una de las cosas que realmente me llamó la atención fue que en el código de la plantilla obtengo:

 TodoController : Controller

Luego, en el código del tutorial que se supone que debo usar en lugar de eso, encuentro:

 [Route("api/[controller]")] [ApiController] TodoController : ControllerBase

Estoy muy interesado en saber por qué es necesario derivar de ControllerBase en lugar de Controller para un controlador de API web. ¿Por qué se hace esto?

over 4 years ago · Santiago Trujillo
4 Respostas
Responde à pergunta

0

por qué es necesario derivar de ControllerBase en lugar de Controller para un controlador API web.

No es estrictamente necesario, sólo más al grano. La clase Controller se deriva de ControllerBase y agrega algunos miembros que solo son necesarios para admitir Vistas.

Básicamente:

 public abstract class Controller : ControllerBase { public dynamic ViewBag { get; } public virtual ViewResult View(object model) { } // more View support stuff }

Cuando escribe una API, ControllerBase se adapta mejor a sus requisitos, pero ambos funcionarán.

Según la documentación (énfasis mío):

No cree un controlador de API web derivando de la clase Controller. Controller se deriva de ControllerBase y agrega soporte para vistas, por lo que es para manejar páginas web, no solicitudes de API web. Hay una excepción a esta regla: si planea usar el mismo controlador para las vistas y las API web, derivelo de Controller .

Me parece recordar que no había ControllerBase en las primeras iteraciones de MVC, se insertó más tarde. De ahí la estructura de herencia/nomenclatura ligeramente extraña.

over 4 years ago · Santiago Trujillo Relatório

0

Otra diferencia importante es que ControllerBase es una clase abstracta, por eso no implementa el método Dispose. Así que tienes que manejarte. ver esta entrada SO

over 4 years ago · Santiago Trujillo Relatório

0

DESDE https://docs.microsoft.com/en-us/aspnet/core/web-api/?view=aspnetcore-3.1

No cree un controlador de API web derivando de la clase Controller. Controller se deriva de ControllerBase y agrega soporte para vistas, por lo que es para manejar páginas web, no solicitudes de API web.

over 4 years ago · Santiago Trujillo Relatório

0

Clase abstracta ControllerBase

La clase abstracta del controlador se deriva de la clase abstracta ControllerBase, por lo tanto, es compatible con la creación de vistas, la API no es un consejo para crear vistas.

La clase abstracta ControllerBase tiene miembros [Propiedades, métodos] sin implementación como

 public abstract class ControllerBase{ public HttpResponse Response { get; } public HttpRequest Request { get; } public HttpContext HttpContext { get; } public virtual RedirectToActionResult RedirectToAction(string actionName);}

ControllerBase tiene todas las solicitudes y respuestas entre el lado del cliente y el lado del servidor


Clase abstracta de controlador

La clase abstracta del controlador nos permite crear vistas para mostrar datos en el lado del cliente, se deriva de la clase abstracta ControllerBase.

 public abstract class Controller : ControllerBase{ public dynamic ViewBag { get; } public ViewDataDictionary ViewData { get; set; } public ITempDataDictionary TempData { get; set; } }

https://newbedev.com/why-derive-from-controllerbase-vs-controller-for-asp-net-core-web-api

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda