首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

请教各位小弟我为什么得不到TextBox的值

2012-01-29 
请问各位我为什么得不到TextBox的值usingSystemusingSystem.DatausingSystem.ConfigurationusingSystem

请问各位我为什么得不到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的规则完全作废。不过楼主看来还涉及不到动态装载的控件的知识,就不多说了。

热点排行