在ASP.Net Core的MVC中我们可以通过ActionModel来修改Action的名称。以下代码修改了ActionModel,以更新其应用的操作名称。新名称作为属性的参数提供。此新名称用于路由,因此它会影响访问的Url路径:
using System;
using Microsoft.AspNetCore.Mvc.ApplicationModels;
namespace AppModelSample.Conventions
{
public class CustomActionNameAttribute : Attribute, IActionModelConvention
{
private readonly string _actionName;
public CustomActionNameAttribute(string actionName)
{
_actionName = actionName;
}
public void Apply(ActionModel actionModel)
{
// this name will be used by routing
actionModel.ActionName = _actionName;
}
}
}
此属性适用于Home控制器中的操作方法:
// Route: /Home/MyCoolAction
[CustomActionName("MyCoolAction")]
public string SomeName()
{
return ControllerContext.ActionDescriptor.ActionName;
}
即使方法名称是"SomeName",该属性还是取代了使用方法名称的 MVC 约定,并将操作名称替换为 MyCoolAction。因此,用于达到此操作的路线是/Home/MyCoolAction.。
此方法针对ASP.Net Core框架下的MVC 结构程序。
参考链接:https://docs.microsoft.com/en-us/aspnet/core/mvc/controllers/application-model?view=aspnetcore-5.0