c# - 区域在 .netcore 中显示为查询字符串
问题描述
在 asp.net core 中,我为Admin
模块定义了区域,并为 url 映射进行了必要的配置,如下所示。但是,该区域在链接上显示为查询字符串。这究竟是什么原因?尽管我在 中尝试了许多不同的模式MapControllerRoute
,但问题并没有消失。
启动.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?}");
});
区域/管理员/控制器/BaseController.cs
[Area("Admin")]
public abstract class BaseController<T> : Controller where T : BaseController<T>
区域/管理员/控制器/HomeController.cs
[Area("Admin")]
public class HomeController : Controller{}
区域/管理员/控制器/CompanyController.cs
[Area("Admin")]
public class CompanyController : BaseController<CompanyController>
区域/管理员/_Layout.cshtml
<a asp-area="Admin" asp-controller="Company" asp-action="CompanyIndex">Company</a>
正如我所提到的,该区域显示为查询字符串。
http://localhost:49256/Company/CompanyIndex?area=Admin
解决方案
你需要制定路线
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?}");
});
否则它将匹配第一个路径。
推荐阅读
- python-3.x - import X 和 from X import Y 之间的时间差
- javascript - 如何从 asp.net 中的代码调用 Javascript 警报
- vb.net - 将标签更改为文本框中的文本 VB.NET
- php - 如何在php中的特定时间显示特定内容?
- unicode - 如何在 DTD 中编码百分号?
- odbc - 如何创建 SOTAMAS90 DSN?
- java - 编译java类,'非法开始类型'和'
预期的错误 - sql - Oracle 在插入时不会自动生成主键
- excel - 使用编码打开 CSV 数据
- php - Mockery 的 andReturn() 执行方法,而不是模拟返回值