如何代码,其接受不知道现有它被称为参数变化的输入参数的方法

问题描述:

我试图在ASP.NETMVCC#到代码的方法做如下如何代码,其接受不知道现有它被称为参数变化的输入参数的方法

  1. 的方法,将通过使用URL等被称为但下面不同的网址会有不同的参数。例如, ;

    - URL 1:host/myController/myMethod?param1=value1&param2=value2

    - URL 2:host/myController/myMethod?param3=value3&param4=value4&param5=value5

  2. 的方法不必知道前 调用的参数。参数本身和参数数量因呼叫而异,并且该方法将接受任何参数。

我试图在方法中使用params string[] myParamaters作为输入,但是当我通过URL调用方法时myParameters接受一个空值。

如何为像这样的控制器方法定义参数?

+0

为什么不使用像'的ActionResult的MyMethod(字符串参数1,字符串参数2,字符串参数3,串param4,串param5)'的方法和基于去关闭你的输入是什么。我建议使用一个数据对象,一旦你得到5个变量。 – lloyd

+0

我在这里放5个参数,但实际上参数的数量可以很多。可能超过30个,我不知道请求中可能会调用哪些参数。所以基本上,该方法将接受任何内容,然后解析方法内的参数名称和值。 – user3622488

+2

[那个答案]有什么问题(https://stackoverflow.com/questions/46246052/how-to-call-ac-sharp-function-by-using-urls-varying-in-number-of-parameters)所以你再次问它 –

您应该能够通过Request.QueryString解析QueryString。例如:

public ActionResult MyMethod() 
{ 
    foreach(string key in Request.QueryString) { 
     // Do stuff with Request.QueryString[key] 
    } 
} 

这样,您将不需要方法定义中的可变参数列表。

您可以从HttpRequest.QueryString返回的字典中获取URL参数。而不是将参数烘焙到操作方法的原型中,只需在控制器中抓取它们即可。

ActionResult MyAction() //No params 
{ 
    var params = HttpContext.Current.Request.QueryString; 
}