0

このコードはどのように記述すればよいですか? if (!query.Keys[i].Contains("ddl"))でオブジェクト参照がオブジェクトのインスタンスに設定されていません

string getLink(int toPage)
{
    NameValueCollection query = HttpUtility.ParseQueryString(Request.Url.Query);
    query["p"] = toPage.ToString();

    string url = Request.Path;
    int count = query.Count;

    for (int i = 0; i < count; i++)
    {
        if (!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)));
    }
4

5 に答える 5

2

前述のように、null を確認します。以下は極端なチェックですが、申し訳ありませんが安全であることをお勧めします。

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)));
    }
}
于 2013-08-06T18:05:25.713 に答える
0

おそらく初期化に問題があると思います

  NameValueCollection query = HttpUtility.ParseQueryString(Request.Url.Query);

何か問題があるのか​​もしれません

HttpUtility.ParseQueryString(Request.Url.Query)

コードの一部。

于 2013-08-06T22:32:13.487 に答える