请看下面这个程序: public partial class _Default : System.Web.UI.Page
{
private string postedString; //接收 html控件myText传来的值 protected void Page_Load(object sender, EventArgs e)
{ if (!IsPostBack)
{
try
{
postedString = Request.Form["myText"].ToString();
}
}
} protected void Button1_Click(object sender, EventArgs e)
{
StreamWriter sw = new StreamWriter(@"d:\text.txt" );
sw.WriteLine( postedString );
sw.Flush();
sw.Close();
} Page_Load方法在页面加载时执行了语句
postedString = Request.Form["myText"].ToString(); 假设我在myText控件中输入“hello”,那么postedString=“hello”,但是 Button1_Click事件执行后,text.txt内容却是空的!也就是说没有将 postedString的值写入文件,why??我测试了一下,Page_Load方法中的postedString 的确得到了“hello”这个值,可是为什么text.txt内容是空的??
{
private string postedString; //接收 html控件myText传来的值 protected void Page_Load(object sender, EventArgs e)
{ if (!IsPostBack)
{
try
{
postedString = Request.Form["myText"].ToString();
}
}
} protected void Button1_Click(object sender, EventArgs e)
{
StreamWriter sw = new StreamWriter(@"d:\text.txt" );
sw.WriteLine( postedString );
sw.Flush();
sw.Close();
} Page_Load方法在页面加载时执行了语句
postedString = Request.Form["myText"].ToString(); 假设我在myText控件中输入“hello”,那么postedString=“hello”,但是 Button1_Click事件执行后,text.txt内容却是空的!也就是说没有将 postedString的值写入文件,why??我测试了一下,Page_Load方法中的postedString 的确得到了“hello”这个值,可是为什么text.txt内容是空的??
解决方案 »
- clickonce 部署后关于皮肤的问题 IrisSkin2
- C#中怎么样paint一个三角形
- Remoting问题
- remoting 客户端激活类型在iis作宿主产生的问题
- C# winform 求助!
- 保存文件问题(asp.net),在线等待
- 关于asp转C#代码的问题
- 新手的迷惑,richTextBox突出显示选择文本问题
- 怎么在新的新闻上加个new图片?---在线等!
- 为什么我向窗体添加CommonDialog等控件时会出现“你没有使用此ActiveX控件的许可证”?
- 属性中的set
- 我做VB6多年,因为还熟悉C++,所以今年转向C#,现在可以用C#独立开发小型软件。今想再掌握一下VB.NET(因为以前我的VB6程序想转vb.net和C#),不知困难有多大,需要多长时间,请高手赐教!
sw.WriteLine( postedString );
sw.Flush();
sw.Close();
是不是流用错了?I/O我不太熟,用过,觉得使用的步骤挺多,你查看一下StreamWriter的使用方法与步骤。我觉得是这里错了。
protected void Button1_Click(object sender, EventArgs e)
{
StreamWriter sw = new StreamWriter(@"d:\text.txt" );
sw.WriteLine( Request.QueryString["myText"]);
sw.Flush();
sw.Close();
}
处设置一个断点你会发现又重新执行了,这时就是空的了。
protected void Button1_Click(object sender, EventArgs e)
{
StreamWriter sw = new StreamWriter(@"d:\text.txt" );
sw.WriteLine( Request.QueryString["myText"]);
sw.Flush();
sw.Close();
}
我赞成这个楼主的说法。
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
try
{
postedString = Request.Form["myText"].ToString();
TextArea1.Value = postedString;
}
} 然后把 button_click方法中的 sw.WriteLine( postedString );改成sw.WriteLine( TextArea1.Value ); 这样,就能正常的向文件输出数据了,这是为什么?
如果想要值在页面刷新时不被清空,要用ViewState,比如TextArea1.Value就是通过ViewState保存的。
google一下IsPostBack和ViewState吧
感谢你的回答,不过我不太明白啊,当page_load第一次调用时,IsPostBack=false,此时会执行if语句段的,
if (!IsPostBack)
{
try
{
postedString = Request.Form["myText"].ToString();
}
}
所以,postedString 应该被赋值了才对,我再点击button,这时候的postedString应该有值啊,怎么会是空呢?
因为postedString是_Default类的成员变量,而每次request都会生成一个新的_Default,你在上一个_Default对象中赋的值当然不能带到下一个_Default对象了,这样能明白?