2012-07-01 6 views
0

У меня есть это:ASP.NET Профиль

protected void Page_Load(object sender, EventArgs e) 
{ 
    nome_Txt.Text = Profile.dados_pessoais.nome; 
} 


protected void save_Click(object sender, EventArgs e) 
{ 
    Profile.dados_pessoais.nome = nome_Txt.Text; 
} 


Если Profile.dados_pessoais.nome пуст, nome_txt.Text пуст тоже. Когда я меняю nome_Txt.Text на teste, например, когда я нажимаю на кнопку nome_Txt.Text, пусто. Что я делаю неправильно?

+0

Зачем стоит классика asp? Исправлено ... – walther

+1

попробуйте вызвать 'save()' метод объекта 'Profile'' Profile.Save() ' –

+0

@walther, который является первым тегом, который появляется при вводе' asp' ..:/ –

ответ

1

Событие Page_Load запускается до события нажатия кнопки, поэтому вы всегда назначаете текстовое поле пустым значением.

Чтобы решить эту проблему, не заполнить текстовое поле, когда вы находитесь в Postback:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack) 
    { 
     nome_Txt.Text = Profile.dados_pessoais.nome; 
    } 
} 

Как также указано в комментарии, вы, вероятно, придется сохранить профиль после его изменения, иначе она не будет сохраняются при следующей загрузке страницы:

protected void save_Click(object sender, EventArgs e) 
{ 
    Profile.dados_pessoais.nome = nome_Txt.Text; 
    Profile.Save() 
} 
+0

Большое спасибо. Это работает – Eriksson

+0

Я думаю, что не обязательно Profile.Save(), потому что когда вы устанавливаете, например, Profile.dados_pessoais.nome = nome_Txt.Text, автоматически сохраняется в базе данных – Eriksson

+0

@Eriksson, это зависит от реализации 'Profile'. –