Asp.net 核心 MVC 使动作在路由中可选
Asp.net core MVC make action optional in routing
我正在尝试管理我的项目的路由设置,但我并不了解所有内容,我想在 url 中将一些操作或控制器名称设为可选。
例如,我有一个带有“SignIn()”操作的控制器“HomeController”,我希望它可以通过 url“/signin”而不是“/home/signin”访问。
对于名为“ProjectsController”且具有操作“Details(int id)”的控制器,我希望它可以通过“/projects/348”而不是“/projects/details/348”访问。
我没有修改默认端点配置:
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
如何让一些控制器名称和动作名称可选?在那之后我仍然可以使用标签助手来链接 asp-controller 和 asp-action ?
我认为你必须使用路由属性。例如,对于您的登录操作
public partial class HomeController : Controller
{
[Route("~/signin")]
public IActionResult SignIn()
{
.....
}
}
并使用相同的模板进行其他特殊操作
你也可以为一个动作设置多条路线
[Route("~/signin")]
[Route("~/home/signin")]
public IActionResult SignIn()
{
.....
}
我正在尝试管理我的项目的路由设置,但我并不了解所有内容,我想在 url 中将一些操作或控制器名称设为可选。
例如,我有一个带有“SignIn()”操作的控制器“HomeController”,我希望它可以通过 url“/signin”而不是“/home/signin”访问。
对于名为“ProjectsController”且具有操作“Details(int id)”的控制器,我希望它可以通过“/projects/348”而不是“/projects/details/348”访问。
我没有修改默认端点配置:
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
如何让一些控制器名称和动作名称可选?在那之后我仍然可以使用标签助手来链接 asp-controller 和 asp-action ?
我认为你必须使用路由属性。例如,对于您的登录操作
public partial class HomeController : Controller
{
[Route("~/signin")]
public IActionResult SignIn()
{
.....
}
}
并使用相同的模板进行其他特殊操作
你也可以为一个动作设置多条路线
[Route("~/signin")]
[Route("~/home/signin")]
public IActionResult SignIn()
{
.....
}