Introduction
In this article, we’ll discuss Controllers in the MVC .NET framework. If you choose the MVC framework then everything is a result of an action and actions are categorizing in controllers. Let’s see it in our application. Please, read our previous article before proceeding to this article where we learn Dependency Injection in ASP.NET Core.
So, we open the solution explorer we have the controllers for it. we have one default controller here which is called HomeController.

The first thing, we can see the default Home controller is the class in the controller class that means an action inside a controller. And as you can see this default Test controller And the index is the default action.
Add Controllers
Let’s right-click on controllers for their Then select Add controller.

Now, we have this dialog box to define which kind of controllers we would like to create.

Let’s create an empty one. Now we are asked to give it a name. In .NET MVC and we see all controllers must-have controller at the end of the name. we chose this controller.

This is an index action that is created by default when we created the controller. then, we delete this one to create another action.
we create a new public method here.
The name of our action is a string out the output is a simple string and as so it returns a string value.

So, then save and test it in the browser to test our new action.

So when there are a new request and the source code is changed it automatically gets compiled back to our ID.
Let’s remember something we have in our out in Startup.cs. we have an option on that segment which is called ID.

So, let’s use it in our actions.
We can add a parameter called ID which is not case sensitive.

That type can be anything for here we chose in and we also changed the return value to include ID.

Let’s see, we were tested in the browser.
So, now in browse there, if we add a number and then pressing enter, We will have these result

The controller returns JSON data
The following example returns JSON data. Notice, the return type of the UserInfo() method is set to JsonResult as we are explicitly returning JSON data. In this case, UserInfo() method always returns JSON data. It does not respect content negotiation and ignores the Accept Header.
public class TestController : Controller
{
private readonly IUserRepository _UserRepository;
public TestController(IUserRepository UserRepository)
{
_UserRepository = UserRepository;
}
public JsonResult UserInfo()
{
User model = _UserRepository.GetUser(1);
return Json(model);
}
}
Controller returns ObjectResult
The following example respects content negotiation. It shows the Request Accept Header and if it is set to application/xml, then XML data is returned. If the Accept header is set to application/JSON, then JSON daThe following example respects content negotiation. It shows at the Request Accept Header and if it is set to application/XML, then XML data is returned. If the Accept header is set to application/JSON, then JSON data is returned.
public class TestController : Controller
{
private IUserRepository _UserRepository;
public TestController(IUserRepository UserRepository)
{
_UserRepository = UserRepository;
}
public ObjectResult UserInfo()
{
User model = _UserRepository.GetUser(1);
return new ObjectResult(model);
}
}
Configure XML format Service
So, it returns the data in XML format and we have to add Xml Serializer Formatter by calling AddXmlSerializerFormatters() method in ConfigureServices() method in Startup.cs file.
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().AddXmlSerializerFormatters();
}
Controller returns View
The below example returns a View. Notice we have set ViewResult as the return type for the UserInfo method as we are returning a view.
public class TestController : Controller
{
private IUserRepository _UserRepository;
public TestController(IUserRepository UserRepository)
{
_UserRepository = UserRepository;
}
public ViewResult UserInfo()
{
User model = _UserRepository.GetUser(1);
return View(model);
}
}
At this point, if we run the application and navigate to http://localhost:49119/Test/UserInfo, we get the following error. This is because we do not have the required View file created yet. We will discuss Views in MVC in our next article.
InvalidOperationException: The view ‘UserInfo’ was not found. The following locations were searched: /Views/Test/UserInfo.cshtml /Views/Shared/UserInfo.cshtml /Pages/Shared/UserInfo.cshtml data is returned.
Thank you for reading this article, I hope you will understand the Controllers in ASP.NET Core MVC. We’ll get into more details about this when we’ll learn Views in ASP.NET Core MVC in the next article.
Thanks for the purpose of giving like amazing subject material.