[英]ASP.NET Core MVC wrong link is generated
I have a controller with this code.我有一个带有此代码的 controller。 I want all actions to be /Action/Controller
or /{culture}/Action/Controller
except for Login which should be /Login
or /{culture}/Login
.我希望所有操作都是/Action/Controller
或/{culture}/Action/Controller
除了 Login 应该是/Login
或/{culture}/Login
。 Route works fine but Link is generated always as /Accounts/Login
or /{culture}/Accounts/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);
}
}
Link looks like this链接看起来像这样
<a asp-action="Login">...</a> //outputs /Accounts/Login
I want it to point to /Login but it keeps generating wrong link.我希望它指向 /Login 但它不断生成错误的链接。
Configuration in Startup.cs looks like this 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}");
});
});
You can try to change the code that in front of the controller as below:您可以尝试更改 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();
}
....
}
result:结果:
I found solution.我找到了解决方案。 There was another Login method in AccountsController for HttpPost which didn't have any Route attribute. AccountsController 中有另一个用于 HttpPost 的 Login 方法,它没有任何 Route 属性。 Adding same attributes to second method solved the problem.向第二种方法添加相同的属性解决了这个问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.