在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; }
}
遗憾的是,我没有更改请求应用程序的选项,[]中包含的字符串可能是任何未知值。
答案 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;
}
}
}