繁体   English   中英

ASP.NET Core MVC错误链接生成

[英]ASP.NET Core MVC wrong link is generated

我有一个带有此代码的 controller。 我希望所有操作都是/Action/Controller/{culture}/Action/Controller除了 Login 应该是/Login/{culture}/Login 路线工作正常,但链接始终生成为/Accounts/Login/{culture}/Accounts/Login ...

[Route("[controller]/[action]")]
[Route("/[controller]/[action]")]
public class AccountsController : Controller
{
    [Route("/Login", Order = 0)]
    [Route("/{culture}/Login", Order = 1)]
    public IActionResult Login(short? showLostPasswordInfo)
    {
        return View(model);
    }
}

链接看起来像这样

<a asp-action="Login">...</a> //outputs /Accounts/Login

我希望它指向 /Login 但它不断生成错误的链接。

Startup.cs 中的配置如下所示

app.UseEndpoints(endpoints =>
{
     endpoints.MapHealthChecks("/health");
     endpoints.MapControllers();
     app.UseEndpoints(endpoints =>
     {
          endpoints.MapControllerRoute(
          name: "default",
          pattern: "{controller}/{action}");
          endpoints.MapControllerRoute(
          name: "cultureDefault",
          pattern: "{culture:culture}/{controller}/{action}");
     });
});

您可以尝试更改 controller 前面的代码如下:

        [Route("[action]/[controller]")]
        [Route("/[action]/[controller]")]
        public class AccountsController : Controller
        {
            
            [Route("/Login", Order = 0)]
            [Route("/{culture}/Login", Order = 1)]
    
            public IActionResult Login(short? showLostPasswordInfo)
            {
                return View();
            }
             ....
         }

结果:

在此处输入图像描述

我找到了解决方案。 AccountsController 中有另一个用于 HttpPost 的 Login 方法,它没有任何 Route 属性。 向第二种方法添加相同的属性解决了这个问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM