在asp.net中处理querystring coontaining []

时间:2014-11-28 17:22:31

标签: asp.net asp.net-mvc query-string

在asp.net中的以下查询字符串中处理查询[search]和排序[Driver1]参数的最佳方法是什么?

?queries[search]=greenock&id=20&sorts[Driver1]=1

我尝试使用此模型但只绑定了id:

public class ICRSRequestModel
{
    public int ID { get; set; }
    public ICollection<string> Sorts { get; set; }
    public ICollection<string> Queries { get; set; }
}

遗憾的是,我没有更改请求应用程序的选项,[]中包含的字符串可能是任何未知值。

2 个答案:

答案 0 :(得分:1)

如果属性是

public ICollection<string> Queries { get; set; }

然后查询字符串需要

?queries[0]=greenock

您需要将属性更改为

public Dictionary<string, string> Queries { get; set; }

以便查询字符串可以是

?queries[search]=greenock

密钥将是&#34;搜索&#34;价值将是&#34; greenock&#34;

请注意,这仅适用于单个queries值。 ?queries[search]=greenock?queries[anotherKey]=anotherValue将无效

答案 1 :(得分:0)

很抱歉,还没有获得50个回复分数,否则我会对这个可能毫无用处的评论发表评论,但这里有...

我确信使用MVC绑定有更好的方法,但如果所有其他方法都失败了,可能值得从Server.Request对象获取QueryString并将字符串拆分以提取所需的信息。您可以使用我在项目中所处的代码将它们放入keyvaluepair集合中,我确信它可以根据您的需要进行操作。

Dictionary<string, string> dictionary = new Dictionary<string, string>();
foreach (string part in queryString.Split(new char[] { '&' }))
{
   if (!string.IsNullOrEmpty(part))
   {
       string[] strArray = part.Split(new char[] { '=' });
       if (strArray.Length == 2)
       {
           dictionary[strArray[0]] = strArray[1];
       }
       else
       {
           dictionary[part] = null;
       }
   }
}
相关问题