当的NullReferenceException获取最新主题和回复对于论坛中用户俱乐部
-
26-09-2019 - |
题
我想查询组论坛(论坛?)用户俱乐部获得这些论坛的最新主题和回复。这是我使用的代码:
RoomCollectionCriterion userClubRoomsCollection = new RoomCollectionCriterion();
foreach (Club userClub in userClubCollection)
{
RoomCriterion userClubRoomCriterion = new RoomCriterion();
userClubRoomCriterion.ID = new IntegerCriterion();
userClubRoomCriterion.ID.Value = userClub.ForumRoom.ID;
userClubRoomsCollection.Criteria.Add(userClub.Name, userClubRoomCriterion);
}
TopicQuery topicQuery = new TopicQuery();
topicQuery.Room = new RoomCriterion();
// Pass in our collection of the user's clubs to the query
topicQuery.Room.Rooms = userClubRoomsCollection;
MessageCollection topics = QueryHandler.GetQueryResult<EPiServer.Community.Forum.Topic, MessageCollection>(topicQuery, pageNumber, 2);
MessageCollection replies = QueryHandler.GetQueryResult<EPiServer.Community.Forum.Topic, MessageCollection>(topicQuery, pageNumber, 4);
我的问题是,每次我打至GetQueryResult
第一通话时间,我得到一个NullReferenceException
。我看不出什么毛病/与我传递到GetQueryResult
缺少什么,但我希望其他人先前已经做到了这一点,并可以建议修复这一点。
更新26/10/2010结果
正如马格努斯我建议换出我QueryHandler.GetQueryResult
用于向ForumHandler.GetQueryResult
呼叫,但这似乎并没有已产生了效果。我还下调了参数GetQueryResult
让自己的代码行现在是:
MessageCollection topics = ForumHandler.GetQueryResult(topicQuery);
但是这仍然给我一个NullReferenceException。这表明对我的问题不在的GetQueryResult方法取其处理我打电话,这是在topicQuery
对象,因为这是该公司保持不变到目前为止的东西。我想知道如果我缺少一个属性,需要的TopicQuery
物体上设置。
更新2010年4月11日,点击 有没有在这里需要考虑一个“安全环境”?即,查询需要在具有到所有论坛完整访问权的用户的上下文中运行?
解决方案 2
此将该溶液(作为发现我的同事)是:
TopicQuery topicQuery = new TopicQuery();
//For latest topics we want to sort by the topics creation date.
topicQuery.CreateDate = new DateTimeCriterion();
topicQuery.Room = new RoomCriterion();
topicQuery.Room.ID = new IntegerCriterion();
//We want to include several roomIDs
topicQuery.Room.ID.Includes = new IntegerInCriterion();
//For each club, get its ForumRoom
foreach (Club userClub in userClubCollection)
{
topicQuery.Room.ID.Includes.Values.Add(userClub.ForumRoom.ID);
}
//Sorting of results
CriterionSortOrder critSort = new CriterionSortOrder(topicQuery.CreateDate, EPiServer.Common.Sorting.SortingDirection.Descending);
//Add sorting to query
topicQuery.OrderBy.Add(critSort);
MessageCollection topics = QueryHandler.GetQueryResult<EPiServer.Community.Forum.Topic, MessageCollection>(topicQuery, 1, 2);
topicQuery.OrderBy.Remove(critSort);
//For Latest replies we want to sort topics by LastReply.CreateDate. Therefore we add this.
topicQuery.LastReply = new ReplyCriterion();
topicQuery.Replies = new ReplyCollectionCriterion();
topicQuery.Replies.Count = new IntegerCriterion();
topicQuery.Replies.Count.Operator = ComparisonOperator.GreaterThan | ComparisonOperator.Equals;
topicQuery.Replies.Count.Value = 1;
topicQuery.LastReply.CreateDate = new DateTimeCriterion();
CriterionSortOrder critSort2 = new CriterionSortOrder(topicQuery.LastReply.CreateDate, EPiServer.Common.Sorting.SortingDirection.Descending);
topicQuery.OrderBy.Add(critSort2);
MessageCollection replies = QueryHandler.GetQueryResult<EPiServer.Community.Forum.Topic, MessageCollection>(topicQuery, 1, 4);
lvMyEntries.DataSource = topics;
lvMyEntries.DataBind();
lvMyReplies.DataSource = replies;
lvMyReplies.DataBind();
在关键点在这里似乎是使用它,我起的名字推断IntegerInCriterion
允许你提交一个整数集在查询中使用的标准(如SQL IN
条款我猜的)。
其他提示
尝试使用EPiServer.Community.Forum.ForumHandler.GetQueryResult()
和其过载。
不隶属于 StackOverflow