没有从TextBox获得用户输入

Arm*_*lak 2 asp.net textbox wcsf

我开始对一些完全平庸的事情感到不安:我没有从TextBox中获得用户输入:S

我这样做(aspx背后的代码):

protected void Page_Load(object sender, EventArgs e)
    {
        if (!this.IsPostBack)
        {
            this._presenter.OnViewInitialized();
        }
        this._presenter.OnViewLoaded();
        txtBox1.Text = "blah";

    }
    protected void Button1_Click(object sender, EventArgs e)
{
            //Do sth with txtBox1.Text but when I read it, it is still the same as when a loaded the page at Page_Load, So if I entered "blahblah" in the txtBox1 via browser the text I get when I debug or run is still "blah"
        }
Run Code Online (Sandbox Code Playgroud)

和aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="InsertStudent.aspx.cs" Inherits="IzPT.Vb.Views.InsertStudent"
    Title="VnosProfesorja" MasterPageFile="~/Shared/DefaultMaster.master" %>
<asp:Content ID="content" ContentPlaceHolderID="DefaultContent" Runat="Server">
        <h1>Student</h1>
        <p>
            <table style="width:100%;">
                <tr>
                    <td style="width: 139px">
                        Name</td>
                    <td>
                        <asp:TextBox ID="txtBox1" runat="server"></asp:TextBox>
                    </td>
                </tr>
            </table>
        </p>
        <p>
            <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Save" />
        </p>
</asp:Content>
Run Code Online (Sandbox Code Playgroud)

我还尝试使用DetailsView执行此操作并将其绑定到列表但是当我在编辑模式中读取值时,我遇到了同样的问题.

有任何想法吗?

wom*_*omp 5

您在每个Page_Load上将文本框Text属性设置为"blah".由于此时已加载ViewState,因此您将覆盖用户输入的任何值.

如果您只想将Text值设置一次,请确保将其放入if (!IsPostBack)检查中.

protected void Page_Load(object sender, EventArgs e)
    {
        if (!this.IsPostBack)
        {
            this._presenter.OnViewInitialized();
            txtBox1.Text = "blah";
        }
        this._presenter.OnViewLoaded();

    }
Run Code Online (Sandbox Code Playgroud)