I tried this link Stack Link FOR 404 Error but error not going showing 404 error for area
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews();
services.AddDbContext<BCAContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("BCAContext")));
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
}
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints => {
endpoints.MapControllers();
//endpoints.MapAreaControllerRoute(
// "Student",
// "Student",
// "Student/{controller=StudentExam}/{action=Index}/{id?}");
endpoints.MapControllerRoute(name: "areas", pattern: "{area:exists}/{controller=StudentExam}/{action=Index}/{id?}");
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
//database
using (var serviceScope = app.ApplicationServices.GetService<IServiceScopeFactory>().CreateScope())
{
var context = serviceScope.ServiceProvider.GetRequiredService<BCAContext>();
context.Database.EnsureDeleted();
context.Database.EnsureCreated();
//context.Database.Migrate();
}
}
}
Two Areas Student and Admin i am using please refer link below
Structure Image
controller
namespace BCA_New_System.Areas.Student.Controllers
{
public class StudentExamController : Controller
{
public IActionResult Index()
{
return View();
}
}
}
index page
@{
ViewData["Title"] = "Index";
Layout = "~/Areas/Student/Views/Shared/_Layout.cshtml";
}
<h1>Index</h1>
you can add a pattern like this for different areas. For student area you add this code snippet:
endpoints.MapControllerRoute(
name: "areas",
pattern: "{area:exists}/{controller=StudentExam}/{action=Index}/{id?}"
);
In your controller you have to add annotation of area like this:
public class StudentExamController : Controller
{
[Area("Student")]
public IActionResult Index()
{
return View();
}
}