В экземпляре объекта не задана ссылка на объект. на месте держатель - PullRequest
0 голосов
/ 13 февраля 2012

Я нашел ошибку в этом

ph = (PlaceHolder)row.FindControl("phs");

ASP.Net код:

<PagerTemplate>
   <table>
     <tr>
       <td><asp:PlaceHolder ID="phs" runat="server"></asp:PlaceHolder></td>
     </tr>
   </table>
</PagerTemplate>

1 Ответ

0 голосов
/ 13 февраля 2012

Если эта строка выдает исключение:

ph = (PlaceHolder)row.FindControl("phs");

... тогда это говорит о том, что row равно нулю. Если оно не равно нулю, то , даже если вызов метода возвращает нуль , не должно вызывать исключение. Вы можете привести нулевую ссылку без проблем 1 .

Итак, выясните, может ли row быть каким-либо образом нулевым, и либо исправьте ваш код, чтобы он не мог, либо проверьте, является ли он нулевым, прежде чем его использовать.


1 Есть три неясных альтернативы, о которых я могу подумать:

  • row.FindRow может фактически ссылаться на поле или свойство в row, которое является делегатом, но этот делегат равен нулю
  • row.FindRow может возвращать ноль, а выражение приведения может выполнять какое-то определенное пользователем приведение, которое вызывает исключение
  • Назначение может быть вызовом установщика свойства, который вызывает исключение

Только первым из них будет эта строка , бросающая исключение, заметьте - и я думаю, что это невероятно маловероятно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...