C# ASP.NET-控件提交错误信息

C# ASP.NET-控件提交错误信息,c#,linq,entity-framework,linq-to-sql,methods,C#,Linq,Entity Framework,Linq To Sql,Methods,在ASP.NET中,我有两个文本框,一个下拉列表和一个按钮,它们将错误的信息提交给我正在调用的方法 我正在使用LINQtoSQL实体框架 我试图做的是更新数据库中包含主题、内容和isPublic(bool)的票证。当我加载页面时,它会自动用已知票证id的票证字段填充文本框和组合框。因此,如果单击票证2,页面将加载,控件将填充来自该票证的信息。所以如果票证2的主题是狗,内容是狗是动物,isPublic是真的,你可以在这些框中看到这些信息。现在,当我更改这些控件的内容并按下按钮时,它将加载我编写的更

在ASP.NET中,我有两个文本框,一个下拉列表和一个按钮,它们将错误的信息提交给我正在调用的方法

我正在使用LINQtoSQL实体框架

我试图做的是更新数据库中包含主题、内容和isPublic(bool)的票证。当我加载页面时,它会自动用已知票证id的票证字段填充文本框和组合框。因此,如果单击票证2,页面将加载,控件将填充来自该票证的信息。所以如果票证2的主题是狗,内容是狗是动物,isPublic是真的,你可以在这些框中看到这些信息。现在,当我更改这些控件的内容并按下按钮时,它将加载我编写的更新数据库的方法:

    public void updateTicket(int _ticket_id,bool _isManager,string _subject,bool _isPublic,string _description)
    {
        TICKET ticket = (from t in db.TICKETs
                         where t.id == _ticket_id
                         select t).First();

        REACTION reaction = (from i in db.REACTIONs
                             where i.tickets_id == _ticket_id
                             select i).FirstOrDefault();

        ticket.subject = _subject;
        ticket.isPublic = _isPublic;
        reaction.contents = _description;

        db.SubmitChanges();
}
我这样称呼这个函数:

instanceOfTickets.updateTicket(2, false, TextBox1.Text,waarde,TextBox2.Text);
其中票证id为2,仅用于测试,waarde是公共的。 我遇到的问题是,当我调试这个方法时,控件将错误的信息返回给方法重载。取而代之的是,例如cat,它仍然将dog发送给我的方法。尽管我在点击按钮前填写了cat

有人知道它为什么会这样做以及如何修复吗? 提前谢谢

编辑:

更清楚地说:

加载页面后:

在这里,我更改了内容:

按下按钮并开始调试后:

编辑2:


所以我找出了问题的原因,但我不知道如何解决它。在使用linq查询从数据库中获取票据后,我有一个包含票据的var票据。当我告诉一个文本框从该票证中获取主题(或内容)时,它会以某种方式与该主题(或内容)保持“连接”。因此,当我说textbox1.text=ticket.subject时,主题将显示在该文本框中,但它将始终保持这样。如何“覆盖”它,以便将正确的信息发送到我的方法?

看起来您在页面加载的每个回发中都会填充数据,而不检查Page.IsPostBack。所以,在您提交表单之后,它主要从db填充文本框,然后尝试更新数据。但是文本框已经包含来自DB的原始值。 初始数据集的小示例

public void Page_Load(object sender, EventArgs e) 
{
  if (!IsPostBack)
  {
    var myObj = GetdataFromDb();
    TextBox1.Text = myObj.Subject;
    TextBox2.Text = myObj.Desctiption;
  }
}

好的,我不熟悉如何使用回发?我添加了一些页面加载方法的示例,用于在编辑之前设置数据库中的数据。这里的关键点是if(!IsPostBack)check-此条件仅在通过GET请求加载页面时有效。当表单提交回ob服务器时,属性IsPostBack的值为true,文本框中的数据不是从DB填充的,而是从ViewState填充的。