【问题标题】:How to write a C# method accepting varying input parameters without knowing the parameters prior it is called如何编写一个接受不同输入参数的 C# 方法,而不知道调用它之前的参数
【发布时间】:2017-09-15 22:06:45
【问题描述】:

我正在尝试在ASP.NET MVC C# 中写一个方法,在下面做

  1. 该方法将通过使用如下 URL 调用,但是不同的 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 采用了 null 值。

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

【问题讨论】:

  • 为什么不使用ActionResult MyMethod(string param1, string param2, string param3, string param4, string param5) 之类的方法并根据您输入的内容进行操作。不过,我建议您在获得多达 5 个变量后使用数据对象。
  • 我在这里放了5个参数,但实际上参数的数量可能很多。可能有30多个,不知道requests中可能会调用哪些参数。所以基本上该方法将接受任何内容,然后解析方法中参数的名称和值。
  • that answer有什么问题让你又问了
  • 我意识到我的问题在那里并不清楚。您的回答没有错,但我实际上并不是在寻找其他东西。感谢您的回答!
  • @user3622488 我的答案?我永远不会回答它

标签: c# asp.net-mvc methods query-string


【解决方案1】:

您应该能够通过Request.QueryString 解析查询字符串。比如:

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2016-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-19
      • 2013-08-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多