C#.NET表单提交无法获取表单元素的新值/修改值

C#.NET表单提交无法获取表单元素的新值/修改值,c#,.net,asp.net,C#,.net,Asp.net,我正在用C#创建一个ASP.NET页面来添加/修改详细信息,然后将这些详细信息保存在MySQL数据库中。为此,我创建了一个母版页“Main.master”,一个web内容表单“modify.aspx”及其背后的代码。 “Main.Master”的代码如下所示。Master包含表单标记声明 <%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Main.master.cs" Inherits="WebApplication.M

我正在用C#创建一个ASP.NET页面来添加/修改详细信息,然后将这些详细信息保存在MySQL数据库中。为此,我创建了一个母版页“Main.master”,一个web内容表单“modify.aspx”及其背后的代码。 “Main.Master”的代码如下所示。Master包含表单标记声明

<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Main.master.cs" Inherits="WebApplication.Main" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
    <asp:ContentPlaceHolder ID="head" runat="server">
    </asp:ContentPlaceHolder>
</head>
<body>
    <form id="mainmasterform" method="post" runat="server">
        <div id="container">
            <div id="maincontent">
                <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
                </asp:ContentPlaceHolder>
            </div>
        </div>
    </form>
</body>
</html>
现在我在获取表单元素的新值时遇到了麻烦。例如,当网页呈现时,“ownfname”中的文本为“Robert”,然后将其修改为“David”,然后单击提交按钮。提交后,访问“ownfname.Text”属性仍然会给出“Robert”而不是“David”。我试图寻找解决办法,但没有成功

我无法理解这里的确切问题是什么。 代码错了吗?有人能帮我解决这个问题吗?
对于这么长的问题,我深表歉意。

如果您正在将初始值加载到页面加载的表单字段中,您需要使用

protected void Page_Load(object sender, EventArgs e)
{
     if (!IsPostBack)
     {
        //Populate form fields
     }
}
这将确保回发时不会覆盖字段


如果您对ASP.net页面的生命周期不太熟悉,那么很值得一读。它解释了加载asp.net页面时事件的顺序。

非常感谢Jon p。您的解决方案对我很有用。你能给我一个文档/教程来理解这个概念吗?看看我刚刚添加的文章,它可以很好地解释这个循环。我早期做的另一个技巧是在我使用的每个事件(页面加载、点击按钮等)中添加调试断点,然后调试页面,以便更好地了解何时运行。阅读完本文后,请接受我的回答(点击勾号)。向上投票也很好(单击向上箭头),如果我下面的答案不起作用,请提供有关表单字段填充方式的更多信息,并提供更多的代码beind页(.aspx.cs页)
protected void modifyDetails(object sender, EventArgs e) {
        string cmdstr = "UPDATE owners SET first_name=?, last_name=? WHERE userid=?";
        OdbcConnection odbccon = new OdbcConnection(ConfigurationManager.ConnectionStrings["MySQL55"].ConnectionString);
        OdbcCommand odbccmd = new OdbcCommand(cmdstr, odbccon);
        string fname = ownfname.Text;
        string lname = ownlname.Text;
        odbccmd.Parameters.Add("@fname", OdbcType.NVarChar, 50).Value = fname;
        odbccmd.Parameters.Add("@lname", OdbcType.NVarChar, 50).Value = lname;
        odbccmd.Parameters.Add("@userid", OdbcType.Int).Value = userid;
        odbccon.Open();
        odbccmd.ExecuteScalar();
    }
protected void Page_Load(object sender, EventArgs e)
{
     if (!IsPostBack)
     {
        //Populate form fields
     }
}