C# 对象引用未设置为对象的实例?搜索结果分页
这段代码应该如何编写?如果(!query.Keys[I].Contains(“ddl”)C# 对象引用未设置为对象的实例?搜索结果分页,c#,asp.net,C#,Asp.net,这段代码应该如何编写?如果(!query.Keys[I].Contains(“ddl”) string-getLink(int-toPage) { NameValueCollection query=HttpUtility.ParseQueryString(Request.Url.query); 查询[“p”]=toPage.ToString(); 字符串url=Request.Path; int count=query.count; for(int i=0;i
string-getLink(int-toPage)
{
NameValueCollection query=HttpUtility.ParseQueryString(Request.Url.query);
查询[“p”]=toPage.ToString();
字符串url=Request.Path;
int count=query.count;
for(int i=0;i
如前所述,检查空值。以下是一个极端检查,但最好是安全的,而不是抱歉
for (int i = 0; i < count; i++) {
if (query != null &&
query.Keys != null &&
i < query.Keys.Count &&
query.ContainsKey(i) &&
query.Keys[i] != null &&
query.GetValues(i) != null &&
!query.Keys[i].Contains("ddl")) {
url += string.Format(
"{0}{1}={2}",
i == 0 ? "?" : "&",
query.Keys[i],
query.Keys[i] == "category" ? string.Join("TTT", query.GetValues(i)).Replace(" ", "+") : string.Join(",", query.GetValues(i)));
}
}
for(int i=0;i
如前所述,检查空值。以下是一个极端检查,但最好是安全的,而不是抱歉
for (int i = 0; i < count; i++) {
if (query != null &&
query.Keys != null &&
i < query.Keys.Count &&
query.ContainsKey(i) &&
query.Keys[i] != null &&
query.GetValues(i) != null &&
!query.Keys[i].Contains("ddl")) {
url += string.Format(
"{0}{1}={2}",
i == 0 ? "?" : "&",
query.Keys[i],
query.Keys[i] == "category" ? string.Join("TTT", query.GetValues(i)).Replace(" ", "+") : string.Join(",", query.GetValues(i)));
}
}
for(int i=0;i
您可以将其重写为
if (query!=null && query.ContainsKey(i) && !query.Keys[i].Contains("ddl"))
你可以把它改写成
if (query!=null && query.ContainsKey(i) && !query.Keys[i].Contains("ddl"))
我不知道你的代码,但看起来你可以简单地重写for循环
for (int i = 0; i < query.Count-1; i++)
{
}
for(int i=0;i
取决于
计数的目的。
您很可能由于超出词典长度而出错。这将解决此问题。我不知道您的代码,但看起来您可以简单地重写for循环
for (int i = 0; i < query.Count-1; i++)
{
}
for(int i=0;i
根据
计数的目的,您很可能由于超出词典长度而出现错误。这将解决此问题。调试应用程序;在导致异常的行中设置断点
- 如果查询为空,则在第一次迭代中检查
- 如果query.Keys[i]为空,则检查每次迭代
在调试模式下,您还可以检查问题发生的迭代(i==0或更高版本?),否则,在不知道发生了什么的情况下很难判断
我也不知道您如何期望除您之外的任何人能够在两年内维护if语句下面的代码……简化它可能是有意义的。调试您的应用程序;在导致异常的行中设置断点
- 如果查询为空,则在第一次迭代中检查
- 如果query.Keys[i]为空,则检查每次迭代
在调试模式下,您还可以检查问题发生的迭代(i==0或更高版本?),否则,在不知道发生了什么的情况下很难判断
我也不知道您如何期望除您之外的任何人能够在两年内维护if语句下面的代码……简化它可能是有意义的。我认为初始化可能有问题
NameValueCollection query = HttpUtility.ParseQueryString(Request.Url.Query);
可能有什么问题
HttpUtility.ParseQueryString(Request.Url.Query)
部分代码。我认为初始化可能有问题
NameValueCollection query = HttpUtility.ParseQueryString(Request.Url.Query);
可能有什么问题
HttpUtility.ParseQueryString(Request.Url.Query)
代码的一部分。检查NULL.ALWAYS.if(query.Keys.Contains(i)和&!query.Keys[i].Contains(“ddl”)
?您在哪里设置计数的值?
以及查询
从哪里来?@Yuck string getLink(int-toPage){NameValueCollection query=HttpUtility.ParseQueryString(Request.Url.Query);Query[“p”]=toPage.ToString();string Url=Request.Path;int count=Query.count;检查NULL.ALWAYS?您在哪里设置计数的值
?以及查询
从哪里来?@Yuck string getLink(int-toPage){NameValueCollection query=HttpUtility.ParseQueryString(Request.Url.query);query[“p”]=toPage.ToString();string Url=Request.Path;int-count=query.count;