我想将表单数据发送到代码下面的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();
}
答案 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();
}