在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