textbox.text始终返回空字符串而不是用户输入的文本

时间:2011-04-17 11:29:19

标签: asp.net

我很惊讶昨晚看到我的代码工作正常,第二天突然我的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值结束。

为什么?

5 个答案:

答案 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');。希望这有助于某人。我没有时间调查为什么我丢失了这个请求的文本,所以这就是我的解决方法。