我很惊讶昨晚看到我的代码工作正常,第二天突然我的textbox.text总是有空字符串..
我的代码是:
Name of Event* :
<br />
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<br />
代码背后:
protected void Page_Load(object sender, EventArgs e) {
}
protected void create_Click(object sender, EventArgs e) {
if (!object.Equals(Session["UserLoginId"], null)) {
int mid = 0;
int cid = 0;
bool valid = true;
if (this.TextBox1.Text == "") {
error.Text = "<p style='color:red'>Marked Fields are compulsory!!</p>";
}
else {
.... // database insert ....
}
我总是以error.text值结束。
为什么?
答案 0 :(得分:5)
在添加新行时,文本框会出现类似的问题。单击添加按钮时,页面重新加载的问题。
通过添加以下内容解决了问题:
Sub Page_Load
If Not IsPostBack Then
BindGrid()
End If
End Sub
根据Microsoft的文档http://msdn.microsoft.com/en-us/library/aa478966.aspx。
答案 1 :(得分:3)
有点提到,但你应该确保你检查你的Post_Back事件没有清除你的文本框。它会默认。 尝试这样的事情:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
if (this.TextBox1.Text == "")
{
error.Text = "<p style='color:red'>Marked Fields are compulsory!!</p>";
}
else
{
//.....
}
}
}
答案 2 :(得分:2)
我有类似的问题。我有一个textarea在回发时向数据库提供数据。我还设计了从同一数据库字段填充textarea的页面。它失败的原因是因为我忘了将重载逻辑放在if(!IsPostPack) {}
块中。当回发发生时,页面加载事件再次被触发,我的重载逻辑在记录初始值之前将textarea消隐。
答案 3 :(得分:1)
如果页面回发,那么用户输入的所有数据都将被删除,因为控件是无状态的,所以你应该通过EnableViewState = true保持数据输入。
答案 4 :(得分:0)
我遇到了这个问题,但我在javascript中使用带有目标的Telerik Ajax请求。我有一个RadTextBox和一个RadButton。我从他们两个调用相同的代码但是如果我从textBox调用它并请求回发,则文本框在页面加载中为空。所以我打电话给RadAjaxManager.ajaxRequestWithTarget('someUserControlClientID', 'myTextBoxText');
所以在page_load中,我可以抓取文本,如果它没有发送到发送参数的服务器,Request.Form("__EVENTARGUMENT")
将保存我的textBox值。
顺便说一句,RadAjaxManager.ajaxRequestWithTarget就像__doPostBack('targetID', 'arguments');
。希望这有助于某人。我没有时间调查为什么我丢失了这个请求的文本,所以这就是我的解决方法。