如果你非要这么做的话(即不管页面是否回传,都要在后台代码里TextBox赋一个值),有两种解决建议:
1. 在Page_Load里只在!IsPostBack的时候给TextBox赋值,但在Button_Click里取出了TextBox的值之后再给TextBox赋值。
2. 在页面上加另外一个TextBox,弄成display为none的,然后在Button提交前用js把你要的文本框的值赋给这个隐藏的textbox,然后在Button_click事件里取这个隐藏的textbox的Text属性出来。
你既然要“按钮的事件中要使用页面用户实时输入的值 ”,那么就不能在Page Load的时候都对文本框重新赋值,而只在!Page.IsPostBack里面赋值,你在 Page.IsPostBack 里面赋值就相当于把 在页面用户输入的值给覆盖了啊,
貌似不能这么做!你为什么要这样处理了?既然想要用用户输入的数据, 为什么又要在Page_Load中把它覆盖了呢?
ASP.NET页面生命周期中,处理回传数据的事件ProcessPostData(也就是把你填写的值进行加载)是发生在Page_Load之前的,所以你在Page_Load中的赋值会把你填写的那个值覆盖,而回传事件,也就是button的单击事件,会发生在Page_Load之后
如果你想在回发事件中使用文本框的数据,在Page_Load里的!Page.IsPostBack代码里写上初始值,或者什么都不写,而是直接赋值。不要在!IsPostBack外面页。你可以在Page_Load第一行设置断点,调试一下整个回发的过程。
Ajax控件?看你的意思是不是用updatepannel???
ispostback 属性判断当前的是不是回传。
比如:第一次回传,用if(!ispostback){方法1}
以后你比如点击按钮。它是不会执行“方法1”的