在ASP.NET Core 3.1 MVC中,区域路由可能不起作用的原因有很多。以下是一些常见的解决方法,其中包含了代码示例:
services.AddMvc()
.AddRazorPagesOptions(options =>
{
options.Conventions.AddAreaPageRoute("YourAreaName", "/Home", "YourAreaName/Home");
})
.SetCompatibilityVersion(CompatibilityVersion.Version_3_0);
确保在区域的文件夹结构中正确设置了区域名。例如,如果你的区域名为"Admin",则应该在区域文件夹中创建一个名为"Admin"的文件夹,并将相关控制器和视图放在该文件夹中。
确保在区域的控制器和视图中正确设置区域名。在控制器类的顶部添加[Area("YourAreaName")]特性,并在视图中使用Area
方法指定区域名。
[Area("YourAreaName")]
public class HomeController : Controller
{
// Controller actions
}
@{
ViewData["Title"] = "Home";
}
Home
Url.Action
或Html.ActionLink
生成区域路由链接时使用了正确的区域名。例如:Home
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "areas",
pattern: "{area:exists}/{controller=Home}/{action=Index}/{id?}"
);
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
以上是解决ASP.NET Core 3.1 MVC中区域路由不起作用的一些常见方法。请根据具体情况进行调整和排查问题。