动作属性

时间:2011-05-26 05:59:31

标签: c# asp.net

我想将表单数据发送到代码下面的aspx.cs页面视图。

但是生成了这个错误:对象引用没有设置为对象的实例。

请指导我。

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>



 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">


 <html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

  <title></title>

  </head>

<body>

 <form id="form1" runat="server" method="post" action="Default2.aspx">

<input id="Text1" type="text" value="dgfdh"  runat="server" name="Text1"/>
</form>
</body>

</html>

 protected void Page_Load(object sender, EventArgs e)
{
    TextBox1.Text = Request.Form["Text1"].ToString();

}

3 个答案:

答案 0 :(得分:2)

当您第一次运行该页面时,还没有任何表单(运行运行cs部分后,创建了),因此Request.Form没有字段然而。

由于表单的值仅在提交时发送(例如,当单击“提交”按钮时),您应该将您的作业置于检查我们是否在提交页面时进入页面的条件: / p>

protected void Page_Load(object sender, EventArgs e)
{
    if (IsPostBack){
         TextBox1.Text = Request.Form["Text1"].ToString();
    }

}

答案 1 :(得分:1)

当您第一次加载页面时,将不会有任何表单值,因为没有任何表单值已从客户端发送。所以Request.Form["Text1"]将为空。

也许你应该先检查Page.IsPostBack?理想情况下,当然,您应该始终验证您在使用之前已经获得了所需的所有表单值。

目前尚不清楚为什么你首先调用ToString() - 表达式Request.Form["Text1"] 已经一个字符串不是吗?你不能只使用:

TextBox1.Text = Request.Form["Text1"];

如果将Text属性设置为null,则应检查会发生什么。您始终可以使用空合并运算符来修复:

TextBox1.Text = Request.Form["Text1"] ?? "";

答案 2 :(得分:1)

作为您的设计视图,我看不到任何ID为TextBox1的控件,因此请先创建一个具有以下ID的控件,然后转到

TextBox1.Text = Request.Form["Text1"].ToString();

您也可以这样做

protected void Page_Load(object sender, EventArgs e)
{
    TextBox TextBox1=new TextBox();

    TextBox1.Text = Request.Form["Text1"].ToString();

}