2012-01-31 2 views
0

ASP.NET w/C#Ошибка ASP.NET nullexception

Я собираю данные из 5 текстовых полей. После ввода данных нажата кнопка отправки, чтобы отправить данные, которые будут отображаться в другой форме, и, надеюсь, сохранить их в базе данных.

После нажатия 'Отправить'

я NullReferenceException был необработанным кодом пользователя

это выделен в коде этой формы позади ...

if (clsDataLayer.SavePersonnel(Server.MapPath("PayrollSystem_DB.mdb"), 
    Session["FirstName"].ToString, 
    Session["LastName"].ToString, 
    Session["PayRate"].ToString, 
    Session["StartDate"].ToString, 
    Session["EndDate"].ToString())) 

какие-либо идеи? Я не очень опытен. Заранее спасибо!!

+0

Одна из ваших переменных сеанса, вероятно, равна нулю. Как они устанавливаются? Если они все хороши, это может быть ошибка, возникающая из метода SavePersonnel – Chris

+0

Значения, которые вы ищете, действительно сохранены в объекте Session? Вы уверены, что не хотите использовать Request.Form вместо Session? –

+0

Джон Сондерс собрал [этот общий вопрос] (http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-in-net), чтобы ответить на вопросы в соответствии с «Почему я получаю исключение NullReferenceException? " Возможно, это поможет вам в правильном направлении. Однако я согласен с Крисом и Йоакимом; кажется вероятным, что одно из значений, которые вы ожидаете в сеансе, на самом деле нет. –

ответ

0

Перед тем, как вы их извлечете, вам необходимо установить эти переменные Session. В сеансе пользователя, в какой-то момент, вы должны установить эти переменные сессии, как

Session["FirstName"] = txtFirstName.Text; 
//etc 

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

if(Session["FirstName"] != null){} 

Также , когда вы используете метод .ToString(), обязательно добавьте () (как и для последнего).

0

Либо clsDataLayer имеет значение NULL, либо одно из 5 значений, которое у вас есть в сеансе, не существует. Вы должны проверить нулевые значения.

КТО, вам не хватает () после ToString в 4 местах; Я удивлен, что даже компилируется.

+0

sorry - typo -() после каждого ToString –

+0

ok, то, что предложенный выше @Shredder, вероятно, вам не хватает: 'Session [" FirstName "] = txtFirstName.Text;' где-то перед вашим оператором 'if'. –

1

Session["Key"] возвращает объект. ЕСЛИ этот объект имеет значение NULL, тогда вызов ToString() на нем будет генерировать исключение нулевой ссылки.

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

(Session["FirstName"] != null) 
    ? Session["FirstName"] 
    : String.Empty; 
Смежные вопросы