C# 路线未使用
我有一个控制器,其动作如下:C# 路线未使用,c#,asp.net-core,asp.net-core-mvc,C#,Asp.net Core,Asp.net Core Mvc,我有一个控制器,其动作如下: public IActionResult Edit(long? page) 我在我的启动类中的UseEndpoints中定义了以下路由 endpoints.MapControllerRoute( name: "Area", pattern: "{area:exists}/{controller=Home}/{action=Index}/{page?}"); 但是,未拾取与控制器操作匹配的路由。 当我将路由更改为此 endp
public IActionResult Edit(long? page)
我在我的启动
类中的UseEndpoints
中定义了以下路由
endpoints.MapControllerRoute(
name: "Area",
pattern: "{area:exists}/{controller=Home}/{action=Index}/{page?}");
但是,未拾取与控制器操作匹配的路由。
当我将路由更改为此
endpoints.MapControllerRoute(
name: "Area",
pattern: "{area:exists}/{controller=Home}/{action=Index}/{id?}");
路由正在工作,但显然方法的page
参数是null
,因为路由需要id
参数
对于我遗漏的id
参数,是否有需要添加的特殊情况,以便使用页面参数的路由能够正常工作?有不能用作路由段或参数名称的情况
使用页面
作为路线参数是常见错误。没有区别
between pattern "{area:exists}/{controller=Home}/{action=Index}/{id?}"); and
pattern: "{area:exists}/{controller=Home}/{action=Index}/{page?}");
因为您的url看起来像“…区域/controller/edit/12345”
它将以同样的方式工作
for action public IActionResult Edit(long? page)
and for public IActionResult Edit(int? id)
但是正如前面提到的@FeiHan不要使用单词“page”来路由,最好只留下“{area:exists}/{controller=Home}/{action=Index}/{id?}”)或者你可以选择任何其他名称来代替“id”。这实际上就是问题所在。因为我们引入了Microsoft identity,所以我们需要一个MVC构建器,并尝试通过AddRazorPages()
或AddMvc()
添加它。这在以前的代码库中是不存在的。使用AddControllersWithViews()
解决了这个问题,并为AddMicrosoftIdentityUI()提供了所需的MvcBuilder