【问题标题】:Getting a null exception error, but the variable this is thrown on is not null得到一个空异常错误,但是抛出的变量不是空的
【发布时间】:2016-06-02 13:50:17
【问题描述】:

我正在制作一个表格,以将记录添加到数据库中,该表格预先填充了现有记录中的值。当我单击保存按钮时,在使用的第一个变量上抛出了一个空异常错误,我知道它有一个值。我什至尝试过输入预填充的值,但仍然得到空异常错误。为什么会这样?

这是来自 aspx 页面的项目:

<asp:tablecell>
   <asp:textbox ID="txt_author" runat="server" Text='<%#Item.Author %>' ></asp:textbox>
</asp:tablecell>

这是在后面的代码中抛出错误的行:

protected void ButtonUpload_Click(object sender, EventArgs e)
{
      string vAuthor = txt_author.Text;

【问题讨论】:

  • 当你说你“知道”它有一个值时——你是否在调试器中验证过?
  • 不,不知道如何在调试器中验证(对这类事情编程的新手)...我可以查看表单并查看 txt_author 的值,我什至可以更改该值,所以我知道表单上的那个字段不为空。
  • txt_author 为空,而不是 txt_author.Text
  • 您在该行设置断点,在调试器中运行 Web 应用程序,然后查看 exact 行中将引发异常的变量值。
  • 我不确定,但这似乎是一个绑定问题。

标签: c# asp.net


【解决方案1】:

假设 ASP 表 ID 将是 Table1 并且有一行并且 TextBox 存在于第一个单元格中,您可以根据您的代码进行修改。

 string vAuthor= (Table1.Rows[0].Cells[0].FindControl("txt_author") as TextBox).Text

由于您的文本框存在于表格结构中,我们无法直接访问它,我们需要先从 TableCell 中找到 Control。

【讨论】:

  • JayDipJ,您的解决方案不适合我。首先,最后的 .Text 无法识别,其次当我删除时,我得到一个无法转换的错误,所以将对 table1.txt_author 的引用转换为字符串,,仍然得到一个空引用错误。
  • @BrentOliver 我刚刚更新了它,因为开头缺少左括号(
  • 在运行“对象引用未设置为对象的实例”时仍然出现错误。与原始提交表单相比,我在此表单上注意到的一件事是,designer.cs 没有为任何控件生成记录,我不得不将它们全部手动添加到页面后面的代码中,也许这会导致额外的问题?
  • @BrentOliver 确认行索引和单元格在您的情况下是正确的,并且在您手动添加或从设计器添加时没有问题
  • 猜我不知道如何引用该索引。它是表格的第一行和第二列。我已经为行尝试了 [0],为列尝试了 [1],还尝试了 [1],[2] 并且仍然抛出相同的错误?很抱歉,对这些语言的编码非常陌生,并且在所有方面都摸索着。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-07
  • 2018-08-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多