2011-04-17 122 views
9

我很惊讶地看到昨晚我的代码工作正常,第二天突然我的textbox.text总是有空字符串..
我的代码是: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

我怀疑在这里没有包含代码的情况。也许在'Page_Load'中有一些正在清除'TextBox'的东西? – David 2011-04-17 11:32:12

+1

在你的应用程序中可能有多个表单标签webform只有一个表单标签允许检查 – 2014-07-23 20:01:12

+1

@ImranRashid完全相同的问题毁了我的整个一天..具有runat = server属性的表单标签出现在母版页中,首先,我在代码后面得到了空值...然后我结束了两个服务器端表单标记错误! :/ – sohaiby 2015-04-26 14:41:03

回答

1

如果页面回发,则所有输入的用户数据都将被删除,因为控件是无状态的,所以您应该通过EnableViewState = true保持您的数据输入。

+0

@gitesh - 将此代码添加到您的问题。如果没有别的,它会被格式化得更好。 – ChrisF 2011-04-17 11:40:11

+0

我在Page_Load中没有做任何事情 – 2011-04-17 11:44:02

+0

是'create'你的按钮? ,请发布按钮的'aspx',我想知道你是否使用更新面板? – 2011-04-17 11:48:53

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 
     { 
      //..... 
     } 
    } 
} 
+0

不工作! 而我已经找出原因,但不知道为什么会发生这种情况 我已经改变了我的主文件,并用新的主文件设计它不工作,否则代码是好的,我正在检查它。 现在为什么新的主文件正在使asp文本框在postpostback之后失去状态...... ???? – 2011-04-17 13:12:52

0

我有这个问题,但我使用Telerik Ajax请求在JavaScript中的目标。我有一个RadTextBox和一个RadButton。我从他们两个调用相同的代码,但如果我从文本框中调用它并请求回发,则该文本框在页面加载中为空。所以我打电话RadAjaxManager.ajaxRequestWithTarget('someUserControlClientID', 'myTextBoxText'); 因此,在page_load中,我可以抓取文本,如果它没有发送到服务器的发送参数,Request.Form("__EVENTARGUMENT")将保存我的文本框的值。顺便说一下,R​​adAjaxManager.ajaxRequestWithTarget就像__doPostBack('targetID', 'arguments');。希望这可以帮助某人。我没有时间调查为什么我输入了这个请求的文本,所以这是我做的解决方法。

2

我有一个类似的问题。我有一个textarea在回发上向数据库提供数据。我还设计了页面来填充来自同一数据库字段的textarea。它失败的原因是因为我忘记将我的重装逻辑放在if(!IsPostPack) {}块内。当发生回发时,页面加载事件再次被激发,并且在我可以记录初始值之前,我的重新加载逻辑清空了textarea。

相关问题