Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在ASP.NET表单提交中,它抛出一个未设置为对象实例的对象引用。_C#_Asp.net_Object Reference - Fatal编程技术网

C# 在ASP.NET表单提交中,它抛出一个未设置为对象实例的对象引用。

C# 在ASP.NET表单提交中,它抛出一个未设置为对象实例的对象引用。,c#,asp.net,object-reference,C#,Asp.net,Object Reference,我有一个简单的电子邮件表单,用ASP.NET编写,代码隐藏文件中有逻辑。这一切都在C#(逻辑是…)。无论如何,在页面加载时,我有以下几点: protected void Page_Load(object sender, EventArgs e) { RequestorName.Text = Request.Form["UserName"].ToString(); RequestorTitle.Text = Request.Form["JobTitle"].ToString();

我有一个简单的电子邮件表单,用ASP.NET编写,代码隐藏文件中有逻辑。这一切都在C#(逻辑是…)。无论如何,在页面加载时,我有以下几点:

protected void Page_Load(object sender, EventArgs e)
{
    RequestorName.Text = Request.Form["UserName"].ToString();
    RequestorTitle.Text = Request.Form["JobTitle"].ToString();
    RequestorEmail.Text = Request.Form["Email"].ToString();
    RequestorPhone.Text = Request.Form["Phone"].ToString();
    RequestorAddress1.Text = Request.Form["Address"].ToString();
    RequestorAddress2.Text = Request.Form["City"].ToString() + " " + Request.Form["State"].ToString() + ", " + Request.Form["Zip"].ToString();

}
这非常有效,因为它将用户信息拉到几个字段中,这样他们就不必手工填写所有内容

代码隐藏中的其他两种方法:

protected void SubmitForm_Click(object sender, EventArgs e)
{
    SendEmail();
}

protected void SendEmail()
{
    try
    {
        //compose email and send

    }
    catch (Exception ex)
    {
        ErrorMessage.Text = "Error: " + ex.ToString();

    }
}
在我的表单页面上,按钮代码如下:

<center>
                <asp:Button runat="server" Text="Submit" ID="Submit" OnClick="SubmitForm_Click" class="button red" />
</center>

当我单击生成电子邮件并发送它的表单上的“发送”按钮时,会发生错误。我可以删除页面加载代码,效果很好,但我想保留它,这样用户就不必填写太多信息

我用过我的Google Fu,读过很多帖子/文章,但似乎找不到解决方案


感谢您的帮助。

为iPostBack添加检查:

protected void Page_Load(object sender, EventArgs e)
{
  if (!IsPostBack) 
  {
    RequestorName.Text = Request.Form["UserName"].ToString();
    RequestorTitle.Text = Request.Form["JobTitle"].ToString();
    RequestorEmail.Text = Request.Form["Email"].ToString();
    RequestorPhone.Text = Request.Form["Phone"].ToString();
    RequestorAddress1.Text = Request.Form["Address"].ToString();
    RequestorAddress2.Text = Request.Form["City"].ToString() + " " +    Request.Form["State"].ToString() + ", " + Request.Form["Zip"].ToString();
  }

}

为iPostBack添加检查:

protected void Page_Load(object sender, EventArgs e)
{
  if (!IsPostBack) 
  {
    RequestorName.Text = Request.Form["UserName"].ToString();
    RequestorTitle.Text = Request.Form["JobTitle"].ToString();
    RequestorEmail.Text = Request.Form["Email"].ToString();
    RequestorPhone.Text = Request.Form["Phone"].ToString();
    RequestorAddress1.Text = Request.Form["Address"].ToString();
    RequestorAddress2.Text = Request.Form["City"].ToString() + " " +    Request.Form["State"].ToString() + ", " + Request.Form["Zip"].ToString();
  }

}

您是否尝试将
if(Page.IsPostBack==false)
添加到页面加载事件中


我假设
Request.Form
代码来自用户填写的字段,但在没有看到其余标记的情况下,我不确定为什么必须将表单中的值重新分配给表单上看起来是其他字段的值。

是否尝试添加
if(Page.IsPostBack==false)
加载页面事件


我假设
Request.Form
代码来自用户填写的字段,但在没有看到其余标记的情况下,我不确定为什么必须将表单中的值重新分配给表单上的其他字段。

错误具体发生在哪里? 根据您的代码,我假设您是从另一个页面发布到您的电子邮件表单,并将参数传递给其他用户

如果是这种情况,那么假设.Text是页面控件,那么您应该在If(!IsPostback){…}中包含控件填充符,以便仅在第一次加载页面时使用。然后可以从本地控件读取您的电子邮件代码

我的猜测是,“Request.Form[…”项可能是回发时回退错误的项


Dave

错误具体发生在哪里? 根据您的代码,我假设您是从另一个页面发布到您的电子邮件表单,并将参数传递给其他用户

如果是这种情况,那么假设你的.Text是页面控件,那么你应该在If(!IsPostback){…}中包含控件填充符,这只是第一次加载页面。然后你的电子邮件代码可以从本地控件读取

我的猜测是,“Request.Form[…”项可能是回发时回退错误的项


戴夫

我想你可能需要一个不在里面的。如果(!IsPostBack)。只想填写页面条目上的字段。哇,效果很好!感谢快速修复和提示。每天学习一些新的内容。我嘿,有第二个后续问题-这在初始页面加载时效果很好,但如果用户意外刷新页面或其他内容,它会再次抛出对象引用错误。我相信这是因为dat最初输入到表单中的a为空,正在出错。我正在尝试在尝试自动填充之前检查是否有数据。想法?我认为您可能需要a不在其中。如果(!IsPostBack)。只想填写页面条目上的字段。哇,效果很好!感谢快速修复和提示。每天学习一些新的内容。我嘿,有第二个后续问题-这在初始页面加载时效果很好,但如果用户意外刷新页面或其他内容,它会再次抛出对象引用错误。我相信这是因为dat一开始输入到表单中的a是空白的,它出错了。我想知道如何在尝试自动填充之前检查是否有数据。你有什么想法?