1 集成路由匹配模式
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddControllersWithViews();
var app = builder.Build();
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Home/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
/*注意:
在.net7最好不要直接使用app.UseEndpoints或app.UseMvc来集成路由匹配模式,否则会出现:“ASP0014”警告信息,
为了避免该警告信息直接使用最小API:app.MapControllerRoute来集成路由匹配模式。
*/
app.MapControllerRoute(
name: "areaRoute",
pattern: $"{{area:exists}}/{{controller=Home}}/{{action=Index}}/{{id?}}");
app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
app.Run();
2 Area Admin
using Microsoft.AspNetCore.Mvc;
namespace Web.Areas.Admin.Controllers
{
[Area("Admin")]
public class MenuController : Controller
{
public IActionResult Index()
{
return View();
}
}
}
3 Web\Areas\Admin\Views\Menu\Index.cshtml
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Menu</title>
</head>
<body>
<h1 style="color:#00ff00">menu------index</h1>
</body>
</html>
对以上功能更为具体实现和注释见:230504_001ShopRazor(.Net7 Areas实现)。