为什么Textarea.Innertext给我零点异常?

时间:2014-12-15 21:58:02

标签: c# asp.net linq textarea nullreferenceexception

<textarea id="TextAreaSend" runat="server" name="SendText">

我创建了一个文本区域来写东西。然后用linq到实体将它保存到数据库。

if (!String.IsNullOrEmpty(TextAreaSend.InnerText))
        {

            int ticketno = Convert.ToInt32(ViewState["TicketNo"]);
            var source = from tickettext in entities.Tickets
                         where tickettext.TicketNo == ticketno
                         select tickettext;
            Ticket ticket = source.Single();
//This is where null point exception is
            ticket.Answer.AnswerText = TextAreaSend.InnerText;

            entities.SaveChanges();
        }

ticket.Answer.AnswerText = TextAreaSend.InnerText;在这一行我 接收;

对象引用未设置为对象的实例。为什么?我该如何解决?

2 个答案:

答案 0 :(得分:2)

如果在TextAreaSend.InnerText上执行空或空检查时,该代码的第一行没有失败,那么在阅读该属性时,由于同样的原因,它无法失败分配给AnswerText的价值。

ticket不能在null,因为如果查询返回0或者超过1 Ticket,您将收到不同的异常。

我们还剩下的是,ticket.Answer可能是null此处ticket的项目,而不是TextAreaSendnull。您正在尝试写入{{1}}对象上的属性。

答案 1 :(得分:1)

我会检查当你调用&#34; source.Single()&#34;时要返回的实体数量。如果在使用&#34; Single()&#34;时返回了多个实体或没有返回实体,则可能会抛出异常。此外,如果您使用&#34; SingleOrDefault()&#34;,您可以在继续使用其余代码之前检查null。