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中查看值预览时,它告诉我它想要发送先前加载的值,而不是我在表单中编辑的值。

我一定是错过了什么,因为它在我的代码的其他地方工作,但我不知道它是什么

c#获取先前加载的文本字段值

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();  
}