<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;在这一行我 接收;
对象引用未设置为对象的实例。为什么?我该如何解决?
答案 0 :(得分:2)
如果在TextAreaSend.InnerText
上执行空或空检查时,该代码的第一行没有失败,那么在阅读该属性时,由于同样的原因,它无法失败分配给AnswerText
的价值。
ticket
不能在null
,因为如果查询返回0或者超过1 Ticket
,您将收到不同的异常。
我们还剩下的是,ticket.Answer
可能是null
此处ticket
的项目,而不是TextAreaSend
或null
。您正在尝试写入{{1}}对象上的属性。
答案 1 :(得分:1)
我会检查当你调用&#34; source.Single()&#34;时要返回的实体数量。如果在使用&#34; Single()&#34;时返回了多个实体或没有返回实体,则可能会抛出异常。此外,如果您使用&#34; SingleOrDefault()&#34;,您可以在继续使用其余代码之前检查null。