我是asp.net的新手,我提出了一个问题。我使用查询字符串加载更新aspx页面,如edit.aspx?Id=123
。在Load事件中,我读取了查询字符串并加载了正确的记录。通过按钮,我更新了记录,因此我为变量分配了文本框的新值,但我不明白为什么不考虑新文本框的值。我以这种方式分配值(例如new_email = txemail.text),但系统在new_email变量中分配编辑记录的相同值。
有人能帮助我理解我犯的错吗?
提前谢谢。
答案 0 :(得分:0)
这里的代码,我可能犯了关于回发的错误,对我来说不是那么清楚。在任何情况下,我都尝试过updateRecord void,无论是(!IsPostBack)还是(IsPostBack),但无论如何变量都没有获得更新的值。
protected void Page_Load(object sender, EventArgs e)
{
// check if querystring has value
if (Request.QueryString["Id"] != null)
{
int idUser = Convert.ToInt32(Request.QueryString["Id"]);
loadRecord(idUser);
}
}
protected void btSave_Click(object sender, EventArgs e)
{
// update record, deliberately simply, just for test purposes
int idUser = Convert.ToInt32(Request.QueryString["Id"]);
updateRecord(idUser);
}
private void updateRecord (int idRecord)
{
string new_FirstName = string.Empty;
string new_LastName = string.Empty;
string new_Email = string.Empty;
try
{
if(IsPostBack)
{
new_FirstName = txFirstName.Text;
new_LastName = txLastName.Text;
new_Email = txEmailAddr.Text;
}
using (AddressBookEntities abe = new AddressBookEntities())
{
User updateUser = (from user in abe.Users
where user.IdUser == idRecord
select user).FirstOrDefault();
updateUser.FirstName = new_FirstName;
updateUser.LastName = new_LastName;
updateUser.Email = new_Email;
abe.SaveChanges();
}
}
catch (Exception ex)
{
txError.Text = ex.ToString();
}
}