【C#】在DotNetCore的MVC重写控制器方法里之获取控制器方法名

大家好,我是全栈小5,欢迎阅读小5的系列文章。

这是《C#》系列文章,每篇文章将以博主理解的角度展开讲解,

特别是针对知识点的概念进行叙说,大部分文章将会对这些概念进行实际例子验证,以此达到加深对知识点的理解和掌握。

温馨提示:博主能力有限,理解水平有限,若有不对之处望指正!

目录

获取步骤

1、直接亮代码

2、直接获取会报错

3、查看变量值

代码举例

控制器作用

1. 路由请求

2. 处理请求

3. 调用服务

4. 传递数据

5. 处理请求生命周期

文章推荐

前端

CSharp

Sql Server


获取步骤

1、直接亮代码

((Microsoft.AspNetCore.Mvc.Controllers.ControllerActionDescriptor)filterContext.ActionDescriptor).ActionName

2、直接获取会报错

3、查看变量值

一步一步展开是可以看到有ActionName值得

代码举例

在.NET Core的MVC中,你可以通过反射获取控制器的方法名。以下是一个示例,展示了如何在控制器方法中获取方法名:

using Microsoft.AspNetCore.Mvc;
using System;
using System.Reflection;

namespace YourNamespace.Controllers
{
    public class YourController : Controller
    {
        public IActionResult YourAction()
        {
            // 获取当前执行的方法名
            string methodName = GetCurrentMethodName();
            
            // 在这里使用方法名,或者进行其他逻辑
            Console.WriteLine($"当前执行的方法名: {methodName}");
            
            return View();
        }

        private string GetCurrentMethodName()
        {
            // 获取当前调用堆栈
            StackTrace stackTrace = new StackTrace();
            
            // 获取当前方法
            MethodBase methodBase = stackTrace.GetFrame(1).GetMethod();
            
            // 返回方法名
            return methodBase.Name;
        }
    }
}

在这个示例中,YourAction方法中调用了GetCurrentMethodName方法,该方法通过StackTrace类获取当前执行的方法,并返回其方法名。请注意,使用反射可能会带来性能开销,因此请在需要的时候使用。

控制器作用

控制器在.NET Core的MVC(Model-View-Controller)架构中扮演着重要的角色,它负责接收用户的请求并作出相应的响应。控制器的主要作用包括:

1. 路由请求

控制器负责根据请求的URL路由到相应的处理方法。
  

2. 处理请求

控制器包含了多个动作方法(Action Methods),这些方法用于处理不同的HTTP请求。例如,GET请求可能对应显示页面的方法,而POST请求可能对应提交表单数据的方法。

3. 调用服务

控制器通常会调用各种服务来执行业务逻辑。这些服务可能包括数据访问服务、身份验证服务等。

4. 传递数据

控制器负责将处理结果传递给视图(View),以便呈现给用户。它可以通过模型(Model)来传递数据给视图。

5. 处理请求生命周期

控制器可以在请求的生命周期中执行各种操作,例如验证、日志记录、异常处理等。

总的来说,控制器在MVC架构中承担了连接用户请求和系统响应之间的桥梁作用,它协调了模型、视图和其他组件之间的交互,使得应用程序能够有效地响应用户的操作。

文章推荐

前端

【前端】使用javascript开发一个在线RGB颜色转换

【前端】vue3+ts+vite,el-table表格渲染记录重复情况

【前端】vue3+typescript+vite+Element-Plus搭建配置初始化项目结构

【前端】WeUI DatePicker时间组件绑定方法以及chatGPT回答

【前端】参考C站动态发红包界面,高度还原布局和交互

CSharp

【C#】使用代码实现龙年春晚扑克牌魔术(守岁共此时),代码实现篇

【C#】使用代码实现龙年春晚扑克牌魔术(守岁共此时),流程描述篇

【C#】约瑟夫原理举例2个代码实现

【C#】List泛型数据集如何循环移动,最后一位移动到第一位,以此类推

【C#】获取文本中的链接,通过正则表达式的方法获取以及优化兼容多种格式

Sql Server

【Sql Server】通过Sql语句批量处理数据,使用变量且遍历数据进行逻辑处理

【新星计划回顾】第六篇学习计划-通过自定义函数和存储过程模拟MD5数据

【新星计划回顾】第四篇学习计划-自定义函数、存储过程、随机值知识点

【Sql Server】Update中的From语句,以及常见更新操作方式

【Sql server】假设有三个字段a,b,c 以a和b分组,如何查询a和b唯一,但是c不同的记录

【Sql Server】新手一分钟看懂在已有表基础上修改字段默认值和数据类型

总结:温故而知新,不同阶段重温知识点,会有不一样的认识和理解,博主将巩固一遍知识点,并以实践方式和大家分享,若能有所帮助和收获,这将是博主最大的创作动力和荣幸。也期待认识更多优秀新老博主。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

全栈小5

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值