System.ArgumentOutOfRangeException: индекс был вне диапазона - PullRequest
0 голосов
/ 28 марта 2011

У меня есть другая проблема с моим кодом (ARGGGH!) У меня есть запрос.Querystring, который я звоню, и я получаю следующую ошибку Индекс был вне диапазона.Должен быть неотрицательным и меньшим, чем размер коллекции.Имя параметра: индекс

public void getAccountRef()
{
    string getAccountRef = (string)Request.QueryString["AccountRef"].ToString();

    SqlDataSource1.SelectParameters[0].DefaultValue = getAccountRef;
}

Есть мысли почему?Я пытаюсь проанализировать ссылку на учетную запись, которая будет отформатирована как REDIT1

Cheers

Джастин

Ответы [ 2 ]

1 голос
/ 28 марта 2011

Могу поспорить, что SqlDataSource1 не имеет установленных параметров, поэтому ваша попытка доступа к первому (элемент 0) не удалась, так как индекс должен находиться в диапазоне от 0 до Count-1 (что в этом случае ничему не удовлетворяет).Вам необходимо добавить параметр.

Также обратите внимание, что:

string getAccountRef = (string)Request.QueryString["AccountRef"].ToString()

В два раза избыточнее.Нет необходимости приводить результат .ToString() к строке, так как ToString() всегда возвращает строку.

Также нет необходимости вызывать его для результата Request.Querystring[fieldName], поскольку он также всегда возвращает строку,Следующего будет достаточно:

string getAccountRef = Request.QueryString["AccountRef"];
0 голосов
/ 28 марта 2011

Я понял! в моем источнике SQLDataSource не было задано ни одного параметра!

<SelectParameters>
    <asp:Parameter DefaultValue="1" Name="AccountRef" Type="String" />
</SelectParameters>

Спасибо, парень,

...