cI went through various posts regarding the Areas routing but still I am not able to resolve my issue.
I would like to split my application in the way that there are two routes.
/Areas/Panel
/Areas/Website
Inside each area there is HomeController
and appropriate methods that correspond to actions.
I would like that whenever user lands to any level 1 route i.e.:
- /home
- /contact
- /about/company
- etc.
is directed to /Areas/Website/{controller}/{action}
and alternatively for
- /panel
- /panel/home
- /panel/users/2
- etc
to /Areas/Panel/{controller}/{action}
My current MVC route is:
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
routes.MapRoute(
name: "area",
template: "{area:exists}/{controller=Home}/{action=Index}/{id?}");
});
but it isn't working, probably because I don't fully understand how tell the router to use Website
area as default. I tried various directives right before the controller itself but it did not work.
Could I ask for your advice?
Thank you in advance.
/Website/Home
then I receive an error:InvalidOperationException: The view 'Index' was not found. The following locations were searched: /Views/Home/Index.cshtml /Views/Shared/Index.cshtml
which makes sense as the desired view is not directly in the project but in Website/Views. I was thinking about something liketemplate: "Areas/Website/{controller=Home}/{action=Index}/{id?}")
but this isn't working either. – Protectionism