Controllers in ASP.NET MVC
In this section, you will learn about the Controller in ASP.NET MVC.
The Controller in MVC architecture handles any incoming URL request. The Controller
is a class, derived from the base class System.Web.Mvc.Controller
. Controller class contains public methods called Action methods. Controller and its action method handles incoming browser requests, retrieves necessary model data and returns appropriate responses.
In ASP.NET MVC, every controller class name must end with a word "Controller". For example, the home page controller name must be HomeController
, and for the student page, it must be the StudentController
. Also, every controller class must be located in the Controller
folder of the MVC folder structure.
Adding a New Controller
Now, let's add a new empty controller in our MVC application in Visual Studio.
MVC will throw "The resource cannot be found" error when you do not append "Controller" to the controller class name.
In the previous section, we learned how to create our first MVC application, which created a default HomeController
. Here, we will create new StudentController
class.
In the Visual Studio, right click on the Controller folder -> select Add -> click on Controller..
This opens Add Scaffold dialog, as shown below.
Scaffolding is an automatic code generation framework for ASP.NET web applications. Scaffolding reduces the time taken to develop a controller, view, etc. in the MVC framework. You can develop a customized scaffolding template using T4 templates as per your architecture and coding standards.
Add Scaffold dialog contains different templates to create a new controller
. We will learn about other templates later. For now, select "MVC 5 Controller - Empty"
and click Add
. It will open the Add Controller
dialog, as shown below
In the Add Controller dialog, enter the name of the controller. Remember, the controller name must end with Controller
. Write StudentController
and click Add.
This will create the StudentController
class with the Index()
method in StudentController.cs
file under the Controllers folder, as shown below.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace MVC_BasicTutorials.Controllers
{
public class StudentController : Controller
{
// GET: Student
public ActionResult Index()
{
return View();
}
}
}
As you can see above, the StudentController
class is derived from the Controller
class. Every controller in MVC must be derived from this abstract Controller
class. This base Controller
class contains helper methods that can be used for various purposes.
Now, we will return a dummy string from the Index action method of above the StudentController
. Changing the return type of Index method from ActionResult
to string and returning dummy string is shown below. You will learn about the ActionResult
in the next section.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace MVC_BasicTutorials.Controllers
{
public class StudentController : Controller
{
// GET: Student
public string Index()
{
return "This is Index action method of StudentController";
}
}
}
We have already seen in the routing section that the URL request http://localhost/student
or http://localhost/student/index
is handled by the Index()
method of the StudentController
class, as shown above. So let's invoke it from the browser and you will see the following page in the browser.