C# asp.net文本框更改文本属性
我使用从数据库加载的数据设置textBox文本属性。稍后,用户输入一个新值并单击Save将此信息更新到数据库中。我的问题是textBox.Text永远不会改变它的值 我的文本框C# asp.net文本框更改文本属性,c#,asp.net,webforms,C#,Asp.net,Webforms,我使用从数据库加载的数据设置textBox文本属性。稍后,用户输入一个新值并单击Save将此信息更新到数据库中。我的问题是textBox.Text永远不会改变它的值 我的文本框 <asp:TextBox ID="firstNameModal" runat="server" Width="300px" /> “我的保存”按钮调用更新FirstName值的方法: protected void saveProfile_Click(object sender, EventArgs e) {
<asp:TextBox ID="firstNameModal" runat="server" Width="300px" />
“我的保存”按钮调用更新FirstName值的方法:
protected void saveProfile_Click(object sender, EventArgs e)
{
try
{
int id = (int)HttpContext.Current.Session["userId"];
var query = (from u in db.Users
where u.Id == id
select u).FirstOrDefault();
query.FirstName = firstNameModal.Text;
db.SaveChanges();
} catch(Exception ex)
{
Console.Write(ex.ToString());
}
}
我是网络表单新手,但我做错了什么
这是我的表格:
<form id="form1" runat="server">
<uc:Header ID="homeHeader" runat="server" />
<div class="col-xs-12 col-sm-12 col-md-6 col-lg-6 col-xs-offset-0 col-sm-offset-0 col-md-offset-3 col-lg-offset-3 toppad" >
<div class="panel panel-info">
<div class="panel-heading">
<h3 class="panel-title"><asp:Label ID="UserName" runat="server"/></h3>
</div>
<div class="panel-body">
<div class="row">
<div class="col-md-3 col-lg-3 " align="center"> <img alt="User Pic" src="../img/myAccount.png" class="img-circle img-responsive" /> </div>
<div class=" col-md-9 col-lg-9 ">
<table class="table table-user-information">
<tbody>
<tr>
<td>Full Name:</td>
<td><asp:Label ID="fullName" runat="server" /></td>
</tr>
<tr>
<td>Date of Birth</td>
<td><asp:Label ID="dob" runat="server" /></td>
</tr>
<tr>
<td>Gender</td>
<td><asp:Label ID="gender" runat="server" /></td>
</tr>
<tr>
<td>Phone</td>
<td><asp:Label ID="phone" runat="server" /></td>
</tr>
<tr>
<td>Home Address</td>
<td><asp:Label ID="homeAddress" runat="server" /></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="panel-footer">
<asp:Button ID="editProfile" runat="server" CssClass="btn btn-primary" Text="Edit Profile" OnClientClick="$('#editProfileModal').modal(); return false;" />
<asp:Button ID="myBooks" runat="server" CssClass="btn btn-primary" Text="View my books" OnClick="myBooks_Click" />
</div>
</div>
</div>
<!--- Modal Edit Profile --->
<div class="modal fade" id="editProfileModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button aria-hidden="true" data-dismiss="modal" class="close" type="button">X</button>
<h4 class="modal-title"><strong><asp:Label ID="modalFullName" runat="server" /></strong></h4>
</div>
<div class="modal-body">
<div class="alert alert-info fade in">
<asp:Label runat="server" Text="First Name:" Width="90px" />
<asp:TextBox ID="firstNameModal" runat="server" Width="300px" /> <br /> <br />
<asp:Label runat="server" Text="Last Name:" Width="90px" />
<asp:TextBox ID="lastNameModal" runat="server" Width="300px" /> <br /> <br />
<asp:Label runat="server" Text="Date of Birth:" Width="90px" />
<asp:TextBox ID="dobModal" runat="server" Width="300px" /> <br /> <br />
<asp:Label runat="server" Text="Gender:" Width="90px" />
<asp:TextBox ID="genderModal" runat="server" Width="300px" /> <br /> <br />
<asp:Label runat="server" Text="Phone:" Width="90px" />
<asp:TextBox ID="phoneModal" runat="server" Width="300px" /> <br /> <br />
<asp:Label runat="server" Text="Address:" Width="90px" />
<asp:TextBox ID="homeAddressModal" runat="server" Width="300px" /> <br /> <br />
</div>
</div>
<div class="modal-footer">
<asp:Button ID="saveProfile" OnClick="saveProfile_Click" runat="server"
CssClass="btn btn-primary" Text="Save" />
<button data-dismiss="modal" class="btn btn-default" type="button">Close</button>
</div>
</div>
</div>
</div>
</form>
}再次检查文本框和“保存配置文件”按钮是否位于同一个
HTML标记中。通常,当页面使用site.master文件时会出现这种情况
然后,尝试使用调试器在页面生命周期的不同事件中检查文本框的值
编辑:
我认为您需要将loadMyAccount
方法包装在IsPostBack
条件中,如下所示:
protected void Page_Load(object sender, EventArgs e)
{
if(HttpContext.Current.Session["userId"].Equals(0))
{
Response.Redirect("Login.aspx");
}
else
{
if(!IsPostBack)
{
loadMyAccount((int) HttpContext.Current.Session["userId"]);
}
}
}
这将防止您的
页面加载
覆盖用户的输入。您希望它如何更改?我的意思是,用户在文本框中键入一个新值。它应该改变值。对吗?您希望它在哪里更改值?在数据库里?在屏幕上?我在数据库中假设,但您的问题不清楚。@user6824563您的saveProfile()的值为firstnamemodel.Text。如果操作正确,则应按预期将其保存到数据库中。检查数据库中的表是否已更改。如果确实如此,则只需再次调用loadMyAccount()以刷新文本框值。我想在数据库中进行更改。首先,我加载页面并从数据库中获取FirstName。firstnamemodel.Text=query.FirstName;query.FirstName=“Test1”。然后,运行应用程序,我在TexBox中键入“Test2”,然后单击Save。save方法获取firstnamemodel.Text。问题是,我输入的值仍然是“Test1”,而不是“Test2”。是的,两者的格式相同。您可以调试代码以查看重新加载页面时是否将新值设置为文本框吗?我调试代码并在这一行中显示。query.FirstName=firstnamemodel.Text;firstnamemodel.Text应该具有我输入的新值,但仍然具有旧值谢谢。像冠军一样工作!顺便说一句,这是怎么回事!IsPostBack do?IsPostBack表示页面生成是一次页面重新加载(例如,响应用户所做的操作)!IsPostBack表示页面生成可能包含用户输入和会话状态数据。您应该在“ASP.NET webforms页面生命周期”上进行一些谷歌搜索和阅读,以了解更多有关这方面的详细信息。
public partial class Views_MyAccount : System.Web.UI.Page
{
LibraryEntities db = new LibraryEntities();
protected void Page_Load(object sender, EventArgs e)
{
if(HttpContext.Current.Session["userId"].Equals(0))
{
Response.Redirect("Login.aspx");
}
else
{
loadMyAccount((int) HttpContext.Current.Session["userId"]);
}
}
private void loadMyAccount(int id)
{
var query = (from u in db.Users
where u.Id == id
select u).FirstOrDefault();
UserName.Text = query.FirstName + " " + query.LastName;
fullName.Text = query.FirstName + query.LastName;
DateTime dt = (DateTime) query.Dob;
dob.Text = dt.ToString("MM/dd/yyyy");
gender.Text = (query.Gender == false ? "Female" : "Male");
phone.Text = query.Phone;
homeAddress.Text = query.Address;
// Modal data
modalFullName.Text = query.FirstName + " " + query.LastName;
firstNameModal.Text = query.FirstName;
lastNameModal.Text = query.LastName;
dobModal.Text = dt.ToString("MM/dd/yyyy");
genderModal.Text = (query.Gender == false ? "Female" : "Male");
phoneModal.Text = query.Phone;
homeAddressModal.Text = query.Address;
}
protected void myBooks_Click(object sender, EventArgs e)
{
}
protected void saveProfile_Click(object sender, EventArgs e)
{
try
{
int id = (int)HttpContext.Current.Session["userId"];
var query = (from u in db.Users
where u.Id == id
select u).FirstOrDefault();
query.FirstName = firstNameModal.Text;
db.SaveChanges();
} catch(Exception ex)
{
Console.Write(ex.ToString());
}
}
protected void Page_Load(object sender, EventArgs e)
{
if(HttpContext.Current.Session["userId"].Equals(0))
{
Response.Redirect("Login.aspx");
}
else
{
if(!IsPostBack)
{
loadMyAccount((int) HttpContext.Current.Session["userId"]);
}
}
}