7

私はそのようなページを持っています

<form runat="server" id="NewForm">
    Name: <asp:TextBox ID="Name" runat="server"></asp:TextBox>
    <asp:Button ID="AddNewName" runat="server" Text="Add" OnClick="AddNewName_Click" />
    <asp:Label ID="NewName" runat="server"></asp:Label>
</form>

コードビハインドには、TextBox名に値を割り当てるPage_Loadがあります。

protected void Page_Load(object sender, EventArgs e)
{
    Name.Text = "Enter Your Name Here";
}

次に、[AddNewName]ボタンをクリックすると、ラベルNewNameに書き込みます。

protected void AddNewDivision_Click(object sender, EventArgs e)
{
    NewName.Text = Name.Text;
}

ただし、Name TextBoxに何を入力しても、ラベルには「ここに名前を入力してください」としか表示されません。NameTextBoxの実際のコンテンツに更新されることはありません。このコードで何が間違っているのですか?

4

3 に答える 3

17

問題は、で変更された値を常に上書きしていることですPage_Load。代わりに、IsPostBackプロパティを確認してください。

protected void Page_Load(object sender, EventArgs e)
{
    if(!IsPostBack)
        Name.Text = "Enter Your Name Here";
}
于 2012-12-11T17:17:13.167 に答える
3

イベントに到達する前に TextBox に入力したテキストを上書きするre-assigningたびに Nameするテキストです。ページの読み込み時に一度割り当て、その後の呼び出しを上書きしないようにするには、プロパティを使用できます。Page_LoadAddNewDivision_ClickPage.IsPostBack

  if(!Page.IsPostBack)
      Name.Text = "Enter Your Name Here";

または、デザイン html とからremoveのテキストを割り当てることができます。statementpage_load

<asp:TextBox ID="Name" runat="server" Text="Enter Your Name Here"></asp:TextBox>
于 2012-12-11T17:20:24.037 に答える
0

別のすぐに明らかな問題は次のとおりです。

<form runat="server" id="NewForm">
    Name: <asp:TextBox ID="Name" runat="server"></asp:TextBox>
    <asp:Button ID="AddNewName" runat="server" Text="Add" **OnClick="AddNewName_Click"** />
    <asp:Label ID="NewName" runat="server"></asp:Label>
</form>

上記のアスタリスクではありません。次に、なぜこれが実行されなかったのか疑問に思っていました。

protected void **AddNewDivision_Click**(object sender, EventArgs e)
{
    NewName.Text = Name.Text;
}

繰り返しますが、アスタリスクに注意してください。正しい void を呼び出していませんでした。実際には、存在すらしていない void を呼び出していた可能性があります。

于 2014-12-04T14:01:00.790 に答える