「對象引用未設置爲對象的實例」在我的方法中,我有多個過濾數據和返回對象的語句。因爲我想用視圖模型服務視圖,我實例化一個列表,然後將其傳遞到視圖中...對於列表<T>。「添加
簡化示例。
List<viewModel> returnedViewModel = new List<viewModel>();
foreach (var item in filteredData)
{
returnedViewModel.Add(// this line is throwing error
new viewModel
{
data = item,
});
}
問題是我得到「對象引用未設置爲對象的實例」。爲其中一個特定的filteredData對象返回了viewModel.Add,而其他則不會導致該問題。
我是在解決了這個問題的可能來源之後。
我使用EF並在我的connectionString中有一個MARS語句。這可能是一個問題嗎?
全statment:
public ActionResult RenderPartialSearchableEventStacks(string viewType,
string orderColumn,
string sortOrder,
int? stackNumber,
string adminName,
string clientName,
string stackType,
string stackStatus,
int? adminId = null)
{
IEnumerable<blsEventStack> eventStacks = unitOfWork.EventStackRepository.Filter(n => (stackNumber == null) || n.EventStackId == stackNumber,
n => (String.IsNullOrEmpty(adminName)) || n.ManagingAdminName.Contains(adminName),
n => (String.IsNullOrEmpty(clientName)) || n.RelatedClientName.Contains(clientName),
n => (String.IsNullOrEmpty(stackType)) || n.EventStackType.Contains(stackType),
n => (String.IsNullOrEmpty(stackStatus)) || n.EventStackLastEventStatus.Contains(stackStatus));
IEnumerable<blsEventStack> viewTypeRelatedEventStacks = eventStacks;
if (viewType == "allEventStacks")
{
viewTypeRelatedEventStacks = unitOfWork.EventStackRepository.GetAll();
}
if (viewType == "assignedEventStacks")
{
// Needed to filter out results with empty (unassigned) admin name
viewTypeRelatedEventStacks = from x in eventStacks
where x.ManagingAdminName != null
select x;
}
if (viewType == "singleAdminAssignedEventStacks")
{
string singleAdminName;
if (adminId != null)
{
// Gets admin name using adminId
singleAdminName = unitOfWork.AdminRepository.GetById(adminId).AdminName;
}
else
{
MembershipUser admin = Membership.GetUser();
blsAdmin loggedInAdmin = (from x in unitOfWork.AdminRepository.GetAll()
where x.AdminEmail == admin.Email
select x).FirstOrDefault();
singleAdminName = loggedInAdmin.AdminName;
ViewBag.adminView = true;
}
// Gets all eventStacks that belong to a give adminName
viewTypeRelatedEventStacks = from x in eventStacks
where x.ManagingAdminName == singleAdminName
select x;
ViewBag.adminId = adminId;
}
IEnumerable<blsEventStack> returnedEventStacks = viewTypeRelatedEventStacks;
if (orderColumn == "stack")
{
if (sortOrder == "descendingStack")
{
returnedEventStacks = from x in viewTypeRelatedEventStacks
orderby x.EventStackId descending
select x;
sortOrder = null;
}
else
{
returnedEventStacks = from x in viewTypeRelatedEventStacks
select x;
sortOrder = "descendingStack";
}
}
if (orderColumn == "managingAdmin")
{
if (sortOrder == "descendingManagingAdmin")
{
returnedEventStacks = from x in viewTypeRelatedEventStacks
orderby x.ManagingAdminName descending
select x;
sortOrder = null;
}
else
{
returnedEventStacks = from x in viewTypeRelatedEventStacks
orderby x.ManagingAdminName
select x;
sortOrder = "descendingManagingAdmin";
}
}
if (orderColumn == "relatedClient")
{
if (sortOrder == "descendingRelatedClient")
{
returnedEventStacks = from x in viewTypeRelatedEventStacks
orderby x.RelatedClientName descending
select x;
sortOrder = null;
}
else
{
returnedEventStacks = from x in viewTypeRelatedEventStacks
orderby x.RelatedClientName
select x;
sortOrder = "descendingRelatedClient";
}
}
if (orderColumn == "stackType")
{
if (sortOrder == "descendingStackType")
{
returnedEventStacks = from x in viewTypeRelatedEventStacks
orderby x.EventStackType descending
select x;
sortOrder = null;
}
else
{
returnedEventStacks = from x in viewTypeRelatedEventStacks
orderby x.EventStackType
select x;
sortOrder = "descendingStackType";
}
}
if (orderColumn == "latestEventTime")
{
if (sortOrder == "descendingLatestEventTime")
{
returnedEventStacks = from x in viewTypeRelatedEventStacks
orderby x.EventStackLastEventTime descending
select x;
sortOrder = null;
}
else
{
returnedEventStacks = from x in viewTypeRelatedEventStacks
orderby x.EventStackLastEventTime
select x;
sortOrder = "descendingLatestEventTime";
}
}
if (orderColumn == "latestEventStatus")
{
if (sortOrder == "descendingLatestEventStatus")
{
returnedEventStacks = from x in viewTypeRelatedEventStacks
orderby x.EventStackLastEventStatus descending
select x;
sortOrder = null;
}
else
{
returnedEventStacks = from x in viewTypeRelatedEventStacks
orderby x.EventStackLastEventStatus
select x;
sortOrder = "descendingLatestEventStatus";
}
}
List<ViewModelAllEventStacks> returnedViewModel = new List<ViewModelAllEventStacks>();
foreach (var item in returnedEventStacks)
{
returnedViewModel.Add(
new ViewModelAllEventStacks
{
EventStack = item,
AdminId = item.AdminEventLogs.FirstOrDefault().AdminId,
ClientId = item.ClientEventLogs.FirstOrDefault().ClientId
});
}
ViewBag.stackNumber = stackNumber;
ViewBag.adminName = adminName;
ViewBag.clientName = clientName;
ViewBag.stackType = stackType;
ViewBag.stackStatus = stackStatus;
// ViewBag passing state of existing order
ViewBag.sortOrder = sortOrder;
// ViewBag passing view data (ex. assignedEventStacks, allEventStacks, etc.)
ViewBag.viewType = viewType;
return PartialView("BLS_AllEventStacks", returnedViewModel);
}
在運行時,*其中*對象實際上是'null'? – David 2014-10-02 12:34:44
您應該嘗試並投射它,並查看'item'是否已初始化。 什麼是「數據」?我們只看到了一小部分難題。 – 2014-10-02 12:35:17
是'viewModel'(urgh-請使用常規類型名稱)構造函數拋出異常嗎?也許分配給'data'屬性/字段?將'viewModel'的構建從列表中添加到列表中... – 2014-10-02 12:35:25