What is the difference between Controller and ControllerBase in .NET?

Çağlar Can SARIKAYA
1 min readOct 17, 2023

--

When you define a controller like this, SomeController inherits from ControllerBase. ControllerBase is a fundamental class in ASP.NET Core designed primarily for building APIs. It provides the basic infrastructure for handling HTTP requests and returning responses for API endpoints. Here's an example:

public class SomeController : ControllerBase
{
[HttpGet]
public IActionResult Get()
{
// API logic
return Ok();
}
}

In this case, SomeController is suitable for building RESTful APIs. It focuses solely on API functionality and does not have built-in support for rendering HTML views.

SomeController : Controller

On the other hand, when you define a controller like this, SomeController inherits from Controller, which extends the functionality of ControllerBase to include support for rendering HTML views. It's ideal for applications that serve both web pages and APIs. Here's an example:

public class SomeController : Controller
{
public IActionResult Index()
{
// Render an HTML view
return View();
}
}

In this case, SomeController can handle both rendering HTML views using the View() method and returning data for API endpoints. It's suitable for applications that require both web pages and APIs.

Choosing Between the Two

The choice between SomeController : ControllerBase and SomeController : Controller depends on your project's requirements. If you're building a RESTful API and don't need to render HTML views, SomeController : ControllerBase is a leaner option that focuses solely on API functionality. However, if your application serves both web pages and APIs, SomeController : Controller provides the versatility needed to handle both scenarios.

--

--

Çağlar Can SARIKAYA
Çağlar Can SARIKAYA

No responses yet