【问题标题】:Setting query string in arrays using namevaluecollection使用 namevaluecollection 在数组中设置查询字符串
【发布时间】:2018-07-27 15:58:15
【问题描述】:

我的网址格式为:

workareaRefs=1&workareaRefs=2&workareaRefs=3&jurisdictions=1&jurisdictions=2&jurisdictions=4&tags=1&tags=2

等等等等。如何将所有这些值存储为 3 个单独的数组作为对象?我将使用它们来过滤查询。下面的方法写错了。不知道该怎么做。

谢谢

    public (string[] workareaRefs, string[] jurisdictions, string[] tags) FiltersQS(NameValueCollection parameters)
    {
        var workAreaRefs = new List<string>();
        var jurisdictions = new List<string>();
        var tags = new List<string>();

        if (WorkAreas.Count == 0 && workAreaRefs.Count == 0)
        {
            foreach (var workAreaRef in parameters["workarearef"])
            {
                workAreaRefs.Add(workAreaRef);
            }
        }

        if (Jurisdictions.Count == 0 && jurisdictions.Count == 0 )
        {
            foreach (var jurisdiction in parameters["jurisdictionref"])
            {
                workAreaRefs.Add(jurisdiction);
            }
        }

        if (Tags.Count == 0 && tags.Count == 0)
        {
            foreach (var tags in parameters["tags"])
            {
                tags.Add();
            }
        }

        return (workAreaRefs, jurisdictions, tags);
    }

【问题讨论】:

  • 所以在编辑之后,现在您的 url 格式似乎使用与服务器端方法相同的参数名称,您的代码是这样开始的吗?
  • 您可能想查看我的简单 QueryStringHelper 库,它使这类事情变得简单 - github.com/DanDiplo/QueryString-Helper(只有一个类)

标签: c# arrays list foreach namevaluecollection


【解决方案1】:
    //Why are you creating lists??? Why not just use the arrays which are passed
    //To your method???
    //You shouldn't be trying to declare local variables with
    //the same names as the parameters being passed to the method
    public (string[] workareaRefs, string[] jurisdictions, string[] tags) FiltersQS(NameValueCollection parameters)

    //Don't use the same names
    //for local variables as the names of parameters being passed to method
    //Changed the list variable names
    var workAreaRefs = new List<string>();
    var jurisDictions = new List<string>();
    var tagss = new List<string>();

    //Change your if statements
    //if (WorkAreas.Count == 0 && workAreaRefs.Count == 0) //NO
    if(workareaRefs.Length > 0) //Yes
    {
        foreach (var workAreaRef in parameters["workarearef"])
        {
            workAreaRefs.Add(workAreaRef);
        }

        //Could just use the method parameter
        //foreach (var workAreaRef in workareaRefs)
        //{
            //workAreaRefs.Add(workAreaRef);
        //}


    }

    //etc. Other ifs need modified like above

【讨论】:

  • @KarimAli 如果这篇文章有帮助,请告诉我。谢谢
猜你喜欢
  • 2010-09-09
  • 1970-01-01
  • 1970-01-01
  • 2010-12-12
  • 1970-01-01
  • 1970-01-01
  • 2016-05-04
相关资源
最近更新 更多