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

本文关键字:新值 修改 元素 表单 表单提交 NET 获取 | 更新日期: 2023-09-27 17:55:03

我正在创建一个ASP。. NET页面添加/修改详细信息,然后将这些详细信息保存在MySQL数据库中。为此,我创建了一个主页"Main"。掌握"一个网页内容表单"的修改。Aspx"及其背后的代码。代码为"主"。"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>

"修改"代码。Aspx"如下所示。本页只包含表单元素。

<%@ Page Language="C#" MasterPageFile="~/Main.Master" AutoEventWireup="true" CodeBehind="modify.aspx.cs" Inherits="WebApplication.modify" Title="Untitled Page" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<table align="center">
    <tr>
        <td><label for="ownfname">First Name</label></td>
        <td><asp:TextBox id="ownfname" runat="server" TextMode="SingleLine"/></td>
    </tr>
    <tr>
        <td><label for="ownlname">Last Name</label></td>
        <td><asp:TextBox id="ownlname" runat="server" TextMode="SingleLine"/></td>
    </tr>
    <tr>
        <td colspan="2">
            <asp:Button ID="submitowner" runat="server" Text="Submit" onclick="modifyDetails" />
        </td>
    </tr>
</table>
</asp:Content>

点击"submitowner"按钮提交"修改"。到"modify.aspx.cs"代码文件中存在的控制器方法"modifyDetails"。"modifyDetails"代码如下:

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

现在我在获得表单元素的新值时遇到了麻烦。例如,当网页呈现文本"ownfname"是"Robert",然后你修改它为"David",然后点击提交按钮。提交后访问"ownfname"。文本"财产"仍然给出"罗伯特"而不是"大卫"。我试着寻找解决办法,但运气不好。

我不明白这里到底是什么问题。代码有问题吗?谁能帮我解决这个问题?我为这么长的问题道歉。

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

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

protected void Page_Load(object sender, EventArgs e)
{
     if (!IsPostBack)
     {
        //Populate form fields
     }
}

这将确保字段在回发时不会被覆盖。

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