请问各位我为什么得不到TextBox的值
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class Interaction_chat : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
chatName.Focus();
chatName.Text = Session[ "chat_name "].ToString();
}
protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
{
string test = chatName.Text.Trim();
if (test != " ")
{
Session[ "chat_name "] = chatName.Text.Trim();
Response.Redirect( "chat_frame.aspx ");
return;
}
}
}
[解决办法]
IsMyJava () 你的程序我已经运行过,可以得到值,如果还是有问题,请再多帖些代码
[解决办法]
我也碰到国类似的问题,我是这样子解决的!
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class Interaction_chat : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack) /*********加上这句试试*********/
{
chatName.Focus();
chatName.Text = Session[ "chat_name "].ToString();
}
}
protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
{
string test = chatName.Text.Trim();
if (test != " ")
{
Session[ "chat_name "] = chatName.Text.Trim();
Response.Redirect( "chat_frame.aspx ");
return;
}
}
}
[解决办法]
逻辑错误.
1. 如果session为空,会把TextBox置为空.
2. 如果TextBox为空则Session为空
解决方案
在pageLoad里面加上ispostBack判断.
[解决办法]
问题分析:
PageLoad 方法是每次页面回传时都要调用的方法,并且是先于其它任何控件事件方法被调用的,所以,不管怎么在 TextBox 框里输入内容,到了服务器端,你的 TextBox 里的值都被
chatName.Text = Session[ "chat_name "].ToString();
这句操作给覆盖了,你可以调试时试下,在这句话之前看看,你的 TextBox 里的值是不是你在客户端输入的值。
问题解决:
bakers 的方法不错,这种问题一般是用 Page.IsPostBack 来解决的,不过你应该根据自己的程序逻辑来做出选择。
[解决办法]
同意ecjtuync() ,仅仅需要增加一个if判断。
是否需要判断ispostback条件,把很多人都搞晕了。我看到csdn上有人凡是遇到获取控件值出问题的问题,就马上跟上说让人加上对这个的判断,这个回复中10个中有9个以上都是错的。这种忘记判断的问题很少看到。大概大多数都犯多余写代码的错误,而楼主则是少写了代码。
只有准确地写代码才是真正正确的。多余写代码比少些代码要危险,少写了判断很容易看出来,而多写了则不容易发现。楼主少写了这个判断比别的代码多写了这个判断的问题要轻多了。
[解决办法]
这种忘记判断的问题很少看到 --> 楼主这种忘记判断的问题很少看到
什么时候应该写,什么时候不应该写,从“页面的生命期”的了解开始去理解。这里的TextBox是在page_load之前就创建好了的,在page_load之前要么是第一次装载页面无初始值,要么是由asp.net给你回填了值,要区分这两种情况来使用if判断。
而如果此TextBox是在page_load中动态装载的,则完全不一样,前面判断是否需要if的规则完全作废。不过楼主看来还涉及不到动态装载的控件的知识,就不多说了。