簡體   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