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"。文本"财产"仍然给出"罗伯特"而不是"大卫"。我试着寻找解决办法,但运气不好。
我不明白这里到底是什么问题。代码有问题吗?谁能帮我解决这个问题?我为这么长的问题道歉。
如果要在页面加载时将初始值加载到表单字段中,则需要使用
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//Populate form fields
}
}
这将确保字段在回发时不会被覆盖。
如果您不太熟悉ASP.net页面生命周期,那么这篇文章非常值得一读。它解释了asp.net页面加载时的事件顺序。