Question

Je commence à perdre mes nerfs sur quelque chose complètement banal: je ne reçois pas l'entrée d'utilisateur à partir d'une zone de texte: S

Je fais quelque chose comme ça (code derrière 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"
        }

Et le 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>

J'ai aussi essayé de le faire avec DetailsView et le lier à une liste, mais quand je lis les valeurs dans le mode d'édition i eu le même problème.

Toutes les idées?

Était-ce utile?

La solution

vous définissez la zone de texte propriété Text à « bla » sur tous les Page_Load. Depuis ViewState a déjà été chargé à ce moment, vous écrasez quelle que soit la valeur entrée par l'utilisateur.

Si vous voulez seulement définir la valeur du texte une fois, assurez-vous que vous le mettez à l'intérieur du chèque de if (!IsPostBack).

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

    }

Autres conseils

Votre problème est que vous changez la valeur en Page_Load!

Page_Load est exécutée avant Button1_Click.

Code de Page_Load Déplacer à cette

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

Ou protéger votre code ... comme ceci

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

Page_Load est appelé lors de la rentrée de poste qui est en cours de réinitialisation de la valeur dans votre zone de texte. Changer à

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

        }

Personnellement, j'aurais une propriété en vue de définir la valeur textbox du présentateur. Dans OnViewInitialized () ou OnViewLoaded ().

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top