C# asp.net文本框更改文本属性

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) {

我使用从数据库加载的数据设置textBox文本属性。稍后,用户输入一个新值并单击Save将此信息更新到数据库中。我的问题是textBox.Text永远不会改变它的值

我的文本框

<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"]);
        }
    }
}