Если эта строка выдает исключение:
ph = (PlaceHolder)row.FindControl("phs");
... тогда это говорит о том, что row
равно нулю. Если оно не равно нулю, то , даже если вызов метода возвращает нуль , не должно вызывать исключение. Вы можете привести нулевую ссылку без проблем 1 .
Итак, выясните, может ли row
быть каким-либо образом нулевым, и либо исправьте ваш код, чтобы он не мог, либо проверьте, является ли он нулевым, прежде чем его использовать.
1 Есть три неясных альтернативы, о которых я могу подумать:
row.FindRow
может фактически ссылаться на поле или свойство в row
, которое является делегатом, но этот делегат равен нулю
row.FindRow
может возвращать ноль, а выражение приведения может выполнять какое-то определенное пользователем приведение, которое вызывает исключение
- Назначение может быть вызовом установщика свойства, который вызывает исключение
Только первым из них будет эта строка , бросающая исключение, заметьте - и я думаю, что это невероятно маловероятно.