Frage

Ich beginne meine Nerven auf einige ganz banale Sache zu verlieren: Ich erhalte keine Benutzereingabe von einem TextBox: S

ich so etwas wie dieser (Code hinter 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"
        }

Und die 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>

Ich habe auch versucht, dies zu tun mit Details und bindet es in eine Liste, aber wenn ich die Werte in dem Bearbeitungsmodus gelesen hatte ich das gleiche Problem.

Irgendwelche Ideen?

War es hilfreich?

Lösung

Sie die Einstellung der Textbox Text-Eigenschaft auf „blah“ auf jedem Page_Load. Da hat Viewstate an dieser Stelle bereits geladen worden ist, was auch immer Sie das Überschreiben der Benutzer eingegebenen Wert.

Wenn Sie nur den Text-Wert einmal einstellen wollen, dann stellen Sie sicher, dass Sie es in der if (!IsPostBack) Kontrolle bringen.

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

    }

Andere Tipps

Ihr Problem ist, dass Sie Wert in Page_Load ändern!

Page_Load ausgeführt wird, bevor Button1_Click.

Verschieben Code von Page_Load auf diesem

protected override void OnLoadComplete(EventArgs e)
{
    txtBox1.Text = "blah";
}

oder schützen Sie Ihren Code ... wie folgt

if (!this.IsPostBack)
{
   txtBox1.Text = "blah";
}

Page_Load wird während der Post zurückgerufen, die den Wert in Ihrem Textfeld zurückzusetzen. Wechseln Sie auf

if (!this.IsPostBack)
        {
            txtBox1.Text = "blah";
            this._presenter.OnViewInitialized();

        }

Persönlich würde ich eine Immobilie in der Ansicht den Textbox Wert von den Vortragenden zu setzen. In OnViewInitialized () oder OnViewLoaded ().

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top