Ing*_*mar 6 c# attributerouting asp.net-core asp.net-core-routing
我在我的 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?}");
});
Run Code Online (Sandbox Code Playgroud)
我的目标是:
如果请求 URL 包含现有区域名称,请使用路由 [1]。如果没有区域名称,则使用路由[2](默认为“Main”区域)。
我的问题:
如何设置默认区域?
好的,解决了。最后,这对我有用:
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?}");
});
Run Code Online (Sandbox Code Playgroud)
有2种方式:
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?}");
});
Run Code Online (Sandbox Code Playgroud)
{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?}");
});
Run Code Online (Sandbox Code Playgroud)
请参阅以下线程以更好地理解
| 归档时间: |
|
| 查看次数: |
2681 次 |
| 最近记录: |