C#页面不断发送旧数据

时间:2016-07-01 11:49:43

标签: c#

所以我有一个页面,用户为应用程序提供数据以将其发送到数据库。 当用户点击下一步时,该应用导航到下一页。但是当用户返回并编辑数据时,应用程序仍将旧数据从第一个输入保存到数据库。

例如:

姓名:Jon Do

用户犯了一个错误并转到上一页L

姓名:John Doe

用户单击下一步,数据将保存到数据库中。但除了保存新数据外,John Doe"它发送旧数据," Jon Do"。当然,这不应该发生。我不知道为什么会这样。

以下是用户应提供其数据的页面的C#代码

private void btnNext_Click(object sender, RoutedEventArgs e)
    {
        if (ckbGegevens.IsChecked == false)
        {
            try
            { 
                dt.saveData = true;
                dt.bedrijfsNaam = txxBvName.Text;
                dt.contactPersoon = txxContPersn.Text;
                dt.telNummer = Convert.ToInt32(txxTelNr.Text);
                dt.eMail = txxEMail.Text;
                dt.land = txxLand.Text;
                dt.plaats = txxPlaats.Text;
                dt.postcode = txxPostCode.Text;

                postToJson.post("bvg");
                this.NavigationService.Navigate(new Doelen());
            }
            catch (Exception) 
            {
                MessageBox.Show("Er ontbreken gegevens!\nOf u heeft ongeldige gegevens ingevuld!");
            }

        }
        else
        {
            try {
                dt.bedrijfsNaam = txxBvName.Text;
                dt.contactPersoon = txxContPersn.Text;
                dt.telNummer = Convert.ToInt32(txxTelNr.Text);
                dt.eMail = txxEMail.Text;
                dt.land = txxLand.Text;
                dt.plaats = txxPlaats.Text;
                dt.postcode = txxPostCode.Text;
                dt.saveData = false;
                MessageBox.Show("Uw gegevens worden niet opgeslagen.\nVink voor optimaal gebruik deze functie aan.");
                this.NavigationService.Navigate(new Doelen());
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }
    }

这是我将它保存到数据库的方式:

 static string bedrijfsNaam = dt.bedrijfsNaam;
    static string ContPers = dt.contactPersoon;
    static int TelNum = dt.telNummer;
    static string email = dt.eMail;
    static string Land = dt.land;
    static string Plaats = dt.plaats;
    static string PostCode = dt.postcode;
    static string json;
    static string b64encode;

    public postToJson(string reqCat)
    {

    }

    public static void post(string reqCat)
    {
        if (reqCat == "bvg")
        {
            json = "{\"bedrijfsNaam\":\"" + bedrijfsNaam + "\"," +
                "\"ContPers\":\"" + ContPers + "\"," +
                "\"TelNum\":\"" + TelNum + "\"," +
                "\"email\":\"" + email + "\"," +
                "\"Land\":\"" + Land + "\"," +
                "\"Plaats\":\"" + Plaats + "\"," +
                "\"PostCode\":\"" + PostCode + "\"}";

            var b64bytes = System.Text.Encoding.UTF8.GetBytes(json);
            b64encode = System.Convert.ToBase64String(b64bytes);
            var data = new NameValueCollection();
            data["b64string"] = b64encode;
            data["filename"] = dt.bedrijfsNaam;

            using (WebClient client = new WebClient())
            {
                var sendB64 = client.UploadValues("http://" + ConfigurationManager.AppSettings["scripturi"].ToString() + "SalesKicker.php", "POST", data);
            }
        }
    }

问题不在PHP脚本中,因此我不必发布该脚本。我知道这是因为我打印出了JSON的结果。其中始终包含来自第一个输入的数据。 有人可以告诉我这里发生了什么吗?

1 个答案:

答案 0 :(得分:0)

分配似乎是在静态类的声明中完成的,因此它们只会发生一次并且您不知道何时发生。因此,您应该将它们放在一个单独的方法中:

static string bedrijfsNaam = dt.bedrijfsNaam;
static string ContPers = dt.contactPersoon;
static int TelNum = dt.telNummer;
static string email = dt.eMail;
static string Land = dt.land;
static string Plaats = dt.plaats;
static string PostCode = dt.postcode;

然后在post方法中调用该方法。

E.g。

private static void updateData() {
    bedrijfsNaam = dt.bedrijfsNaam;
    ContPers = dt.contactPersoon;
    TelNum = dt.telNummer;
    email = dt.eMail;
    Land = dt.land;
    Plaats = dt.plaats;
    PostCode = dt.postcode;
}