Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Adding Areas to an MVC application - any gotchas?

I have an ASP.net MVC application that has been in Production for a while. I would like to add a new Admin section to the application which I wanted to do by creating a new Area. I'm just curious what sorts of things I might need to be aware of when adding this new area.

Specifically:

  1. Is there any existing functionality that is likely to break by adding the new Area?
  2. What is the best way to make an Area restricted to a certain group? Base controller class?
  3. Any other things (common mistakes, etc.) that I need to be aware of that adding a new Area will affect?
like image 641
Dismissile Avatar asked Mar 26 '12 19:03

Dismissile


People also ask

Why we need areas in MVC?

Area allows us to partition the large application into smaller units where each unit contains a separate MVC folder structure, same as the default MVC folder structure. For example, a large enterprise application may have different modules like admin, finance, HR, marketing, etc.

What are the 3 main components of an ASP.NET MVC application?

The Model-View-Controller (MVC) architectural pattern separates an application into three main components: the model, the view, and the controller.

How is area implemented in MVC 5?

Step 1: Right-click on the Controller in your Article area to add a controller. Step 2: Select "MVC 5 Empty Controller". Step 3: Enter the name as "ArticleController" . Step 4: Similarly add the controller for "News".


1 Answers

One thing to be careful of is naming collisions - if you have 2 controllers with the same name but in different areas you need to add namespaces, as described here: http://haacked.com/archive/2010/01/12/ambiguous-controller-names.aspx

To restrict the admin area to a certain group, you could use the Authorize attribute with Roles on the Admin controller(s), as desribed here: ASP.NET MVC 3 - How to restrict areas in an efficient way?

like image 94
Mike Simmons Avatar answered Sep 17 '22 19:09

Mike Simmons