我知道这会被问到很多,而且我已阅读过类似的帖子,但我无法弄清楚我的错误。我得到的Object引用没有设置为带有.aspx.cs文件的对象错误的实例。
以下是我的代码片段...... String.IsNullOrEmpty(accountInCrm.ParentAccountId.Id.ToString())
行引发了错误。
注意:在我的代码中声明了上下文,enduserDropdown是我使用ASP创建的控件。
foreach (var accountInCrm in context.AccountSet.ToList())
{
if (accountInCrm.StateCode == 0)
{
if (String.IsNullOrEmpty(accountInCrm.ParentAccountId.Id.ToString()))
{
enduserDropdown.Items.Add(new ListItem(accountInCrm.Name, accountInCrm.Id.ToString()));
}
我知道accountInCrm不是空的,如果我只是删除String.IsNullOrEmpty If语句一切正常,并且值被添加到我的下拉列表中。
任何想法会导致什么?
编辑:------------------
foreach (var accountInCrm in context.AccountSet.ToList())
{
if (accountInCrm.StateCode == 0)
{
if (accountInCrm.ParentAccountId != null)
{
enduserDropdown.Items.Add(new ListItem("test 2", accountInCrm.Id.ToString()));
}
else
{
enduserDropdown.Items.Add(new ListItem("test 3", accountInCrm.Id.ToString()));
}
}
}
编辑2:-------------从CRM中检索数据
var context = new XrmServiceContext();
foreach (var accountInCrm in context.AccountSet.ToList())
循环遍历CRM中的每个帐户记录。我确信并非CRM中的所有帐户都没有空白的帐户ID,有些会这样做,但大多数帐户都没有。
答案 0 :(得分:2)
您的ParentAccountId
可能为空:
if (accountInCrm.ParentAccountId != null &&
String.IsNullOrEmpty(accountInCrm.ParentAccountId.Id.ToString()))
{
...
}
答案 1 :(得分:0)
您的ParentAccountID
可能为空,因此您需要检查它。
if (accountInCrm.ParentAccountId != null && String.IsNullOrEmpty(accountInCrm.ParentAccountId.Id))
{
...
}
另请注意,您不应尝试将ID
转换为字符串
如果ID
已经是一个字符串,则对其执行ToString没有任何意义,如果它为null,则在空引用上调用ToString将再次崩溃您的代码。
如果ID
不是字符串,那么您可能不应该在非字符串对象上调用String.IsNullOrEmpty
。
答案 2 :(得分:0)
通过在客户端进行所有过滤,您所做的Linq To CRM都是错误的。您还希望仅选择实际需要的值:
foreach(var account in AccountSet.Where (a => a.StateCode.Value == 0 && a.ParentAccountId != null).
Select(a => new Account { Name = a.Name, AccountId = a.AccountId})
{
enduserDropdown.Items.Add(new ListItem(accountInCrm.Name, accountInCrm.Id.ToString()));
}
只要enduserDropdown不为null,就不应该成为问题。