【问题标题】:Area appears as querystring in .netcore区域在 .net 核心中显示为查询字符串
【发布时间】:2021-08-27 00:10:13
【问题描述】:

在 asp.net core 中,我为Admin 模块定义了区域,并为 url 映射进行了必要的配置,如下所示。但是,该区域在链接上显示为查询字符串。这究竟是什么原因?尽管我在MapControllerRoute 中尝试了许多不同的模式,但问题并没有消失。

Startup.cs

app.UseEndpoints(endpoints =>
{
    endpoints.MapControllerRoute(name: "default", pattern: "{controller=Home}/{action=Index}/{id?}");
    endpoints.MapControllerRoute(name: "areas", pattern: "{area}/{controller=Home}/{action=Index}/{id?}");
});

Areas/Admin/Controllers/BaseController.cs

[Area("Admin")]
public abstract class BaseController<T> : Controller where T : BaseController<T>

Areas/Admin/Controllers/HomeController.cs

[Area("Admin")]
public class HomeController : Controller{}

Areas/Admin/Controllers/CompanyController.cs

[Area("Admin")]
public class CompanyController : BaseController<CompanyController>

Areas/Admin/_Layout.cshtml

<a asp-area="Admin" asp-controller="Company" asp-action="CompanyIndex">Company</a>

正如我提到的,该区域显示为查询字符串。

http://localhost:49256/Company/CompanyIndex?area=Admin

【问题讨论】:

    标签: c# asp.net-core .net-core asp.net-core-mvc asp.net-core-3.1


    【解决方案1】:

    你需要制定路线

     endpoints.MapControllerRoute(name: "areas", pattern: "{area}/{controller=Home}/{action=Index}/{id?}");
    

    上面

    endpoints.MapControllerRoute(name: "default", pattern: "{controller=Home}/{action=Index}/{id?}");
    

    喜欢:

    app.UseEndpoints(endpoints =>
    {
         endpoints.MapControllerRoute(name: "areas", pattern: "{area}/{controller=Home}/{action=Index}/{id?}");
         endpoints.MapControllerRoute(name: "default", pattern: "{controller=Home}/{action=Index}/{id?}");
       
    });
    

    否则会匹配第一个路径。

    【讨论】:

    • 对!非常感谢@Yinqiu
    猜你喜欢
    • 1970-01-01
    • 2020-09-30
    • 1970-01-01
    • 2021-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-24
    • 1970-01-01
    相关资源
    最近更新 更多