我在ASP.NET Core 3.1应用程序(MVC)中使用区域。
现在,我希望所有没有显式区域的请求都默认进入“主”区域。这是我当前设置端点路由的方式:
app.UseEndpoints(endpoints =>
{
// 1
endpoints.MapControllerRoute(
name: "area",
pattern: "{area:exists}/{controller=Home}/{action=Index}/{id?}");
// 2
endpoints.MapAreaControllerRoute(
name: "default",
areaName: "Main",
pattern: "{area=Main}/{controller=Home}/{action=Index}/{id?}");
});
我的目标是:如果请求URL包含现有的区域名称,请使用路由[1]。如果没有区域名称,则使用路由[2](默认为“主”区域)。
我的问题:
如何设置默认区域?
好,解决了 最后,这对我有用:
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "area:exists}/{controller=Home}/{action=Index}/{id?}");
endpoints.MapAreaControllerRoute(
name: "default",
areaName: "Main",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
有两种方法:
Controller
和Action
。此外,重要区域应位于外部,Areas
以使其如您所愿成为普通区域(默认区域)。 app.UseEndpoints(endpoints =>
{
// 1
endpoints.MapControllerRoute(
name: "area",
pattern: "{area:exists}/{controller=Home}/{action=Index}/{id?}");
// 2
endpoints.MapAreaControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
{area=Main}/
图案中的多余部分app.UseMvc(routes =>
{
routes.MapControllerRoute(
name: "area",
template: "{area:exists}/{controller=Home}/{action=Index}/{id?}");
routes.MapAreaControllerRoute(
name: "default",
areaName: "Main",
template: "{controller=Home}/{action=Index}/{id?}");
});
请参考以下主题以更好地理解
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句