我有一个文本框和一个按钮。在页面加载时,我从一行中选择一列并将其值放入文本框中。我有一个按钮单击方法,可以使用文本框中的值更新同一列/行。
我遇到的问题是,当我清除文本框中的文本、输入新数据并点击提交时,新文本值不会被保存,而是使用旧文本值。
我在按钮单击方法的末尾放置了一个断点,看来 asp.net 正在发送文本框的旧值,而不是我输入的新值。我完全被难住了。
- 即使我在文本框中设置了 viewstate false,此问题仍然存在。
- 我的两个 LINQ 查询都包含在 using 语句中。
有什么想法吗?
编辑:这是完整的代码:
protected void Page_Load(object sender, EventArgs e)
{
using (StoreDataContext da = new StoreDataContext())
{
var detail = from a in da.Brands
where a.BrandID == 5
select new
{
brand = a,
};
foreach (var d in detail)
{
txtEditDescription.Text = d.brand.Description;
}
}
}
protected void Button1_Click(object sender, EventArgs e)
{
using (StoreDataContext dk = new StoreDataContext())
{
Brand n = dk.Brands.Single(p => p.BrandID == 5);
n.Description = txtEditDescription.Text;
dk.SubmitChanges();
}
}
最佳答案
正如您所说,在 Page_Load 中,您将原始值检索到文本框中,这将覆盖任何更改。
是的,Page_Load 确实在执行按钮单击(或任何其他控制事件)之前执行。我猜您在此之前已经完成了 Windows 窗体开发,ASP.Net Web 窗体事件模型是完全不同的。查看ASP.NET Page Life Cycle Overview .
关于c# - 使用 asp.net 文本框进行 linq to sql 更新的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4404540/