通过ActionModel修改Action的名称

2021-04-29  乐帮网

mvc netcore

在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

公众号二维码

关注我的微信公众号
在公众号里留言交流
投稿邮箱:1052839972@qq.com

庭院深深深几许?杨柳堆烟,帘幕无重数。
玉勒雕鞍游冶处,楼高不见章台路。
雨横风狂三月暮。门掩黄昏,无计留春住。
泪眼问花花不语,乱红飞过秋千去。

欧阳修

付款二维码

如果感觉对您有帮助
欢迎向作者提供捐赠
这将是创作的最大动力