質問

私はいくつかの完全に陳腐なものに私の神経を失い始めている:私はテキストボックスからユーザー入力を取得しない: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"
        }

そして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>

私もたDetailsViewでこれを実行しようとしましたし、それをリストに結合するが、私は編集モードで値を読んだとき、私は同じ問題を抱えています。

任意のアイデア?

役に立ちましたか?

解決

あなたはすべてをPage_Loadに「何とか」へのテキストボックスのTextプロパティを設定しています。 ViewStateはこの時点で既にロードされているので、あなたがしている上書きどのような値ユーザーが入力されます。

あなたが唯一のテキスト値の1時間を設定したい場合は、

は、その後、あなたはif (!IsPostBack)チェックの中に置くことを確認してください。

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

    }

他のヒント

あなたの問題は、あなたがPage_Loadの中で値を変更しているということです!

Page_Load Button1_Click前に実行されます。

移動これをPage_Loadのコード

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

またはあなたのコードを保護...このような

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

をPage_Loadは、あなたのテキストボックスに値をリセットして、ポストバック中に呼び出されています。

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

        }

個人的に私は、プレゼンターからのテキストボックスの値を設定するビューでプロパティを持っているでしょう。 OnViewInitialized()またはOnViewLoaded()内の

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top