C# 使用.net表单中的实体保存对textbox.text的更改

C# 使用.net表单中的实体保存对textbox.text的更改,c#,asp.net,C#,Asp.net,因此,我尝试使用.net表单中文本框中的文本更新数据库中的一行 在pageload上,我加载值并将其分配给textbox的text属性。接下来,我允许用户更改文本并单击按钮上载,但是数据库中的值没有更改 如果我将holter.companyName值更改为静态字符串,数据库将更新。此外,如果我没有在pageloads处分配companyNameTB.text值,则更新按钮将按预期工作 有什么想法吗 protected void Page_Load(object sender, Event

因此,我尝试使用.net表单中文本框中的文本更新数据库中的一行

在pageload上,我加载值并将其分配给textbox的text属性。接下来,我允许用户更改文本并单击按钮上载,但是数据库中的值没有更改

如果我将holter.companyName值更改为静态字符串,数据库将更新。此外,如果我没有在pageloads处分配companyNameTB.text值,则更新按钮将按预期工作

有什么想法吗

    protected void Page_Load(object sender, EventArgs e)
    {
        PortalEntities db = new PortalEntities();
        var holterQuery = from holt in db.Holters
                          where holt.Id == 1
                          select holt;

        Holter holter = holterQuery.Single();

        string companyName = holter.CompanyName;
        CompanyNameTB.Text = companyName;

    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        PortalEntities db = new PortalEntities();
        var holterQuery = from holt in db.Holters
                          where holt.Id == 1
                          select holt;


        Holter holter = holterQuery.Single();
        holter.CompanyName = CompanyNameTB.Text;
        holter.Id = 1;


        db.SaveChanges();



    }

提交表单时,页面加载方法似乎正在覆盖文本框。将其放入条件语句中,以检查请求是否为回发,如下所示:

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostback)
    {
        PortalEntities db = new PortalEntities();
        var holterQuery = from holt in db.Holters
                          where holt.Id == 1
                          select holt;

        Holter holter = holterQuery.Single();

        string companyName = holter.CompanyName;
        CompanyNameTB.Text = companyName;
    }
}

这应该允许在最初加载页面时从数据库填充文本框,但当用户提交表单时,应跳过该部分代码,以便文本框中的新值不会被覆盖。

在页面加载方法中执行此操作,否则,文本框中的值将在任何页面请求时刷新为原始值(回发请求也是如此)

你不需要这一行是按钮点击法

holter.Id = 1;

干得不错,干杯!
holter.Id = 1;