请教问题

akey307 2010-01-23 08:20:12
在下面的代码中,我想实现的是:
(1) 第一次打开网页,TextBox中的文本为"Good Morning."
(2) 单击Button,形成Postback,然后更改TextBox的文本为"Good Afternoon"

可是不管怎样,TextBox的文本总是 "Good Morning.", 请各位帮我看看是什么原因。

(我不想捕捉Button的Onclick事件)



public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Button button1 = new Button();
button1.Text = "Click";
button1.ID = "button1";

TextBox textBox1 = new TextBox();
textBox1.Text = "Good Morning.";
textBox1.ID = "textBox1";

if (IsPostBack)
{
textBox1.Text = "Good Afternoon.";
}

Form.Controls.Add(button1);
Form.Controls.Add(textBox1);
}
}

...全文
79 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
koukoujiayi 2010-01-23
  • 打赏
  • 举报
回复
根据楼主思路,加了Respons.Write(textBox1.Text),是能够显示Good Afternoon的!!
只不过textBox框中不显示,什么原因??
(当然根据楼上名字得换一下是可以的)
private Button button1;
private TextBox textBox1;

protected void Page_Load(object sender, EventArgs e)
{
button1 = new Button();
button1.Text = "Click";
button1.ID = "button1";

textBox1 = new TextBox();
textBox1.ID = "textBox1";

if (IsPostBack)
{
textBox1.Text = "Good Afternoon.";
Response.Write(textBox1.Text);//显示Good Afternoon.
}
else
textBox1.Text = "Good Morning.";

Form.Controls.Add(button1);
Form.Controls.Add(textBox1);

}
满衣兄 2010-01-23
  • 打赏
  • 举报
回复

if (!IsPostBack)
{
Button button1 = new Button();
button1.Text = "Click";
button1.ID = "button1";

TextBox textBox1 = new TextBox();
textBox1.Text = "Good Morning.";
textBox1.ID = "textBox1";
Form.Controls.Add(button1);
Form.Controls.Add(textBox1);
}
else
{
Button button1 = new Button();
button1.Text = "Click";
button1.ID = "button2";

TextBox textBox1 = new TextBox();
textBox1.Text = "Good Afternoon.";
textBox1.ID = "textBox2"; // 名字得换一下,如果不换由于IE缓存问题将不更新TextBox内容
Form.Controls.Add(button1);
Form.Controls.Add(textBox1);
}

这样也行,必须是静态的,非静态的生命周期在服务器回发之后就结束了

static Button button1;
static TextBox textBox1;
protected void Page_Load(object sender, EventArgs e)
{
Response.Expires = -1;
if (!IsPostBack)
{
button1 = new Button();
button1.Text = "Click";
button1.ID = "button1";

textBox1 = new TextBox();
textBox1.Text = "Good Morning.";
textBox1.ID = "textBox1";
}
else
{
textBox1.Text = "Good Afternoon.";
textBox1.ID = "textBox2"; // 名字得换一下,如果不换由于IE缓存问题将不更新TextBox内容
}
Form.Controls.Add(button1);
Form.Controls.Add(textBox1);

}

koukoujiayi 2010-01-23
  • 打赏
  • 举报
回复
楼主的问题很有意思!!
akey307 2010-01-23
  • 打赏
  • 举报
回复
如果能静态在页面上添加控件,当然是最好。这个刚学Asp.net的人也会。

我现在的需求就是要动态添加控件。

把控件声明为类变量,也不好使,代码如下:



public partial class _Default : System.Web.UI.Page
{
private Button button1;
private TextBox textBox1;

protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack)
{
button1 = new Button();
button1.Text = "Click";
textBox1 = new TextBox();
textBox1.Text = "Good Afternoon.";
}
else
{
button1 = new Button();
button1.Text = "Click";
textBox1 = new TextBox();
textBox1.Text = "Good Morning.";
}

Form.Controls.Add(button1);
Form.Controls.Add(textBox1);

}
}




[Quote=引用 6 楼 yfqvip 的回复:]
引用 5 楼 akey307 的回复:
你这样的话,postback之后的页面是空的。
Form里什么都没有。


引用 2 楼 yfqvip 的回复:
C# codepublicpartialclass _Default : System.Web.UI.Page
    {protectedvoid Page_Load(object sender, EventArgs e)
        {if (!IsPostBack)
            {
            Button button1=new Button();
      ?-


额,,,是的,把button声明为类成员变量就行了。如果每次都new一次效率不太好,最好的方法就是直接拖到页面上,不要这样动态生成。
[/Quote]
满衣兄 2010-01-23
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 akey307 的回复:]
你这样的话,postback之后的页面是空的。
Form里什么都没有。


引用 2 楼 yfqvip 的回复:
C# codepublicpartialclass _Default : System.Web.UI.Page
    {protectedvoid Page_Load(object sender, EventArgs e)
        {if (!IsPostBack)
            {
            Button button1=new Button();
      ?-

[/Quote]
额,,,是的,把button声明为类成员变量就行了。如果每次都new一次效率不太好,最好的方法就是直接拖到页面上,不要这样动态生成。
akey307 2010-01-23
  • 打赏
  • 举报
回复
你这样的话,postback之后的页面是空的。
Form里什么都没有。


[Quote=引用 2 楼 yfqvip 的回复:]
C# codepublicpartialclass _Default : System.Web.UI.Page
{protectedvoid Page_Load(object sender, EventArgs e)
{if (!IsPostBack)
{
Button button1=new Button();
?-
[/Quote]
满衣兄 2010-01-23
  • 打赏
  • 举报
回复
Page.IsPostBack 属性

获取一个值,该值指示该页是否正为响应客户端回发而加载,或者它是否正被首次加载和访问。

如果是为响应客户端回发而加载该页,则为 true;否则为 false。

if(!IsPostBack) //表示该页面首次加载时需要做哪些事情
{
//第一次加载页面时执行这里的代码....
}
wiki14 2010-01-23
  • 打赏
  • 举报
回复

protected void Page_Load(object sender, EventArgs e)
{
this.TextBox1.Text = "Good Morning.";

if (IsPostBack)
{
this.TextBox1.Text = "Good Afternoon.";
}

Form.Controls.Add(this.Button1);
Form.Controls.Add(this.TextBox1);

}



<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />
满衣兄 2010-01-23
  • 打赏
  • 举报
回复
    public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Button button1 = new Button();
button1.Text = "Click";
button1.ID = "button1";

TextBox textBox1 = new TextBox();
textBox1.Text = "Good Morning.";
textBox1.ID = "textBox1";
Form.Controls.Add(button1);
Form.Controls.Add(textBox1);
}
else
{
textBox1.Text = "Good Afternoon.";
}


}
}
fengyunshier 2010-01-23
  • 打赏
  • 举报
回复
if (!IsPostBack)
{
textBox1.Text = "Good Afternoon.";
}

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧