2014-01-28 1 views
1

У меня возникла проблема с преобразованием этого идентификационного ключа автомобиля с метки. Здесь ошибка я получаюпроблема с преобразованием с метки на int для идентификационного ключа

Невозможно привести объект типа «» System.Web.UI.WebControls.HiddenField к типу «System.Web.UI.WebControls.Label».

У вас есть предложения, чтобы избежать этой ошибки?

Благодаря

Label myCarId = (Label)item.FindControl("carId"); 
iCarId = Convert.ToInt32(myCarId); 
Session["carId"] = iCarId; 
+0

Очевидно, что «carID» не является ярлыком, а является скрытым полем. –

+1

Элемент 'carId' не является« Label », это« HiddenField ». Он также не может быть преобразован в целое число. – Blorgbeard

ответ

5

Оно должно быть:

HiddenField myCarId = (HiddenField)item.FindControl("carId"); 
iCarId = Convert.ToInt32(myCarId.Value); 
Session["carId"] = iCarId; 
+0

Отправлено же решение в тот же момент :) удалено мое было бесполезно. – pid

+0

ах реально? я этого не замечал. Большой палец. Вы не должны его удалять. Вы также заслуживаете голосования за него. –

+1

'TryParse' будет более безопасным. – MikeSmithDev

0

Сообщение об ошибке свидетельствует о том, что carId скрытое поле, так что если вы хотите метку, которую нужно было бы изменить, что в ASPX/ASMX стр. Ярлык не примитивен, я думаю, что то, что вам нужно, - это Label.Text также, когда дело доходит до преобразования. Я предпочел бы int.TryParse вместо преобразования, поскольку он не генерирует исключение при неудачном преобразовании.

Label myCarId = (Label)item.FindControl("carId"); 
int iCarId; 
int.TryParse(myCarId.Text,out iCarId); 
Session["carId"] = iCarId; 
1
HiddenField myCarId = item.FindControl("carId") as HiddenField; 
iCarId = Convert.ToInt32(myCarId.Value); 
Session["carId"] = iCarId; 

Этикетка не может преобразовать в междунар потому что это управление. Но текст может быть преобразован в строку.

+0

Простой код не ответ на SO. Вы должны объяснить. – EJP

Смежные вопросы