如何从asp.net-mvc控制器中获取所有动作名称?
- 内容介绍
- 文章标签
- 相关推荐
本文共计307个文字,预计阅读时间需要2分钟。
从ASP.NET MVC中的控制器获取所有动作名称,可以通过反射来实现。以下是一个简单的示例代码:
csharpusing System;using System.Linq;using System.Web.Mvc;
public class ControllerActions{ public static void Main() { var controllerType=typeof(YourControllerName); // 替换为你的控制器类型 var actions=GetControllerActions(controllerType); foreach (var action in actions) { Console.WriteLine(action); } }
private static IEnumerable GetControllerActions(Type controllerType) { return controllerType.GetMethods() .Where(m=> m.IsPublic && m.DeclaringType==controllerType) .Select(m=> m.Name) .ToList(); }}
这段代码会输出`YourControllerName`控制器中所有公开方法的名称。请将`YourControllerName`替换为实际的控制器类型。
我怎么能编写代码来从asp.net MVC中的控制器获取所有动作名称?我想自动列出控制器中的所有动作名称.
有谁知道如何做到这一点?
非常感谢.
对此没有通用的解决方案,因为我可以编写从ActionNameSelectorAttribute派生的自定义属性,并使用任何自定义代码覆盖IsValidName,甚至是将名称与随机GUID进行比较的代码.在这种情况下,您无法知道属性将接受哪个操作名称.如果将解决方案限制为仅考虑方法名称或内置ActionNameAttribute,则可以反映该类以获取返回ActionResult的公共方法的所有名称,并检查它们是否具有其Name属性覆盖方法名称的ActionNameAttribute .
本文共计307个文字,预计阅读时间需要2分钟。
从ASP.NET MVC中的控制器获取所有动作名称,可以通过反射来实现。以下是一个简单的示例代码:
csharpusing System;using System.Linq;using System.Web.Mvc;
public class ControllerActions{ public static void Main() { var controllerType=typeof(YourControllerName); // 替换为你的控制器类型 var actions=GetControllerActions(controllerType); foreach (var action in actions) { Console.WriteLine(action); } }
private static IEnumerable GetControllerActions(Type controllerType) { return controllerType.GetMethods() .Where(m=> m.IsPublic && m.DeclaringType==controllerType) .Select(m=> m.Name) .ToList(); }}
这段代码会输出`YourControllerName`控制器中所有公开方法的名称。请将`YourControllerName`替换为实际的控制器类型。
我怎么能编写代码来从asp.net MVC中的控制器获取所有动作名称?我想自动列出控制器中的所有动作名称.
有谁知道如何做到这一点?
非常感谢.
对此没有通用的解决方案,因为我可以编写从ActionNameSelectorAttribute派生的自定义属性,并使用任何自定义代码覆盖IsValidName,甚至是将名称与随机GUID进行比较的代码.在这种情况下,您无法知道属性将接受哪个操作名称.如果将解决方案限制为仅考虑方法名称或内置ActionNameAttribute,则可以反映该类以获取返回ActionResult的公共方法的所有名称,并检查它们是否具有其Name属性覆盖方法名称的ActionNameAttribute .

