Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Не удается преобразовать HiddenField в Int32

Автор вопроса: Mark HollasОтветов: 1

У меня проблема с преобразованием типа данных, которую я просто могу понять

 HiddenField hfFriendId = item.FindControl("hfFriendId") as HiddenField;
 Int32 FriendId = Convert.ToInt32(hfFriendId.Value);

Мне нужно использовать FriendId как и int32 в следующем

UserInfo TargetUser = UserController.GetUserById(PortalSettings.PortalId, FriendId);

поскольку ожидается, что оба аргумента будут int32. Когда я отлаживаю, этот "TargetUser" имеет значение null.

В чем может быть проблема?

  • Есть ли информация о пользователе для переданных параметров? Каково значение FriendId при передаче аргумента? V4Vendetta 04.10.2012
  • проверьте, является ли значение hfFriendId.Value пустым (или нулевым) или нет. Int32 FriendId=0; if(hfFriendId.Value!=""){ FriendId = Convert.ToInt32(hfFriendId.Value); else {FriendId =0;}} user1509 04.10.2012
  • В том-то и дело, что FriendId заполняется значением Mark Hollas 04.10.2012
  • Правильно ли указано название поля (hfFriendId)? Tim 04.10.2012
  • наблюдая за hfFriendId в отладке, я вижу, что это имеет значение. также, когда я смотрю на UserInfo TargetUser = UserController.GetUserById(PortalSettings.PortalId, FriendId); Я вижу там, что FriendId имеет значение, но в eind TargetUser остается нулевым Mark Hollas 04.10.2012
  • @MarkHollas Если у него действительное значение, опубликуйте подробности для метода GetUserById, возможно, там что-то не так. V4Vendetta 04.10.2012

type-conversion

Ответы

Ответ 1 · рейтинг 1 · V4Vendetta

Если вы не уверены в значении, доступном в скрытом поле, вместо использования

Int32 FriendId = Convert.ToInt32(hfFriendId.Value);

Пытаться

int FriendId = int.Parse(hfFriendId.Value); // will throw exception if parse fails

или лучше

int FriendId ;
if(int.TryParse(hfFriendId.Value, out FriendId))
     //get userinfo

Также это может быть проблема с вашим методом UserController.GetUserById, если Convert получает проанализированное значение и не возвращает ноль.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы