以编程方式获取控制器操作参数列表

时间:2015-01-29 08:11:13

标签: c# asp.net-mvc parameters action

我有一个控制器动作

    public class MyController : SitecoreController
        {
            [AllowCrossSiteJson]
            public JsonResult AddSubscriptionsJson(string pipeDelimitedMailingListIds, 
                                                       string email)
            {
                ...
            }
        }

我知道我可以使用

获取Url操作
Url.Action("AddSubscriptionsJson","MyController")

有没有办法通过代码获取可用参数?比方说一个数组/字符串列表?

喜欢这个吗?

["pipeDelimitedMailingListIds","email"]

2 个答案:

答案 0 :(得分:0)

也许不是最好的"实现这一目标的方法,但无论如何都是这样。此示例代码假定与您尝试为参数名称选择的操作方法位于同一控制器内的GetParamNames()方法。

private List<string> GetParamNames(System.Reflection.MethodInfo method)
{
    var output = new List<string>();

    if (method != null && method.GetParameters().Length > 0)
    {
        foreach(var par in method.GetParameters())
            output.Add(par.Name) ;
    }

    return output;
}       

然后从同一个控制器中调用:

var parameters = GetParamNames(this.GetType().GetMethod("your action method name"));

GetParamNames()方法显然可以放在更通用的位置,如共享实用程序类,供多个类使用。

希望这有帮助。

*解决方案来自之前的帖子...names of method parameters

答案 1 :(得分:0)

除了Chris发布的信息之外,以下链接还包含获取MVC操作的MethodInfo所需的信息 - 使用控制器/操作名称来解析方法:How do I get the MethodInfo of an action, given action, controller and area names?