c#获取先前加载的文本字段值
本文关键字:文本 字段 加载 获取 | 更新日期: 2023-09-27 18:14:17
我有一个相当奇怪的问题。我在一个项目编辑页面结束时遇到了一些奇怪的错误,即ASP将旧值传递给c# .cs
代码。
In my Page_Load
private int SomeID = 0;
if (!IsPostBack) {
...
SomeID = Convert.ToInt32(Page.RouteData.Values["id"])
LoadFunction();
}
加载功能:
DataBaseDataContext db = new DataBaseDataContext();
var Item = db.FirstOrDefault(k => k.ID == SomeID);
NameTextBox.Text = Item.Name;
PriceTextBox.Text = Item.Price.ToString();
保存功能:
DataBaseDataContext db = new DataBaseDataContext();
var Item = db.FirstOrDefault(k => k.ID == SomeID);
Item.Name = NameTextBox.Text;
Item.Price = Convert.ToDecimal(PriceTextBox.Text);
...
db.SubmitChanges();
我很烦恼,为什么它不为我保存更改,所以我在保存功能(加载工作良好)中设置db.SubmitChanges()
中的断点。但是当我在VisualStudio中查看值预览时,它告诉我它想要发送先前加载的值,而不是我在表单中编辑的值。
我一定是错过了什么,因为它在我的代码的其他地方工作,但我不知道它是什么
Set SomeID outside !
尝试使用Page.Ispostback
属性到您的Page_Load
事件,如
//Page_Load Event
if (!Page.IsPostBack)
{
DataBaseDataContext db = new DataBaseDataContext();
var Item = db.FirstOrDefault(k => k.ID == SomeID);
NameTextBox.Text = Item.Name;
PriceTextBox.Text = Item.Price.ToString();
}
查看MSDN
用static
代替private int SomeID = 0
中的private
,它将保留你原来的主值并解决你的问题。
检查Page_Load
中的PostBack
是否再次设置TextBox
的值
if (!Page.IsPostBack)
{
DataBaseDataContext db = new DataBaseDataContext();
var Item = db.FirstOrDefault(k => k.ID == SomeID);
NameTextBox.Text = Item.Name;
PriceTextBox.Text = Item.Price.ToString();
}