/// <summary> /// Restores the view-state information from a previous user control request that was saved by the <see cref="M:System.Web.UI.UserControl.SaveViewState" /> method. /// </summary> /// <param name="savedState">An <see cref="T:System.Object" /> that represents the user control state to be restored.</param> protected override void LoadViewState( object savedState ) { base.LoadViewState( savedState ); LocationTypeTab = ViewState["LocationTypeTab"] as string ?? MEMBER_LOCATION_TAB_TITLE; CurrentGroupTypeId = ViewState["CurrentGroupTypeId"] as int? ?? 0; // NOTE: These things are converted to JSON prior to going into ViewState, so the json variable could be null or the string "null"! string json = ViewState["GroupLocationsState"] as string; if ( string.IsNullOrWhiteSpace( json ) ) { GroupLocationsState = new List<GroupLocation>(); } else { GroupLocationsState = JsonConvert.DeserializeObject<List<GroupLocation>>( json ); } json = ViewState["GroupMemberAttributesInheritedState"] as string; if ( string.IsNullOrWhiteSpace( json ) ) { GroupMemberAttributesInheritedState = new List<InheritedAttribute>(); } else { GroupMemberAttributesInheritedState = JsonConvert.DeserializeObject<List<InheritedAttribute>>( json ); } json = ViewState["GroupMemberAttributesState"] as string; if ( string.IsNullOrWhiteSpace( json ) ) { GroupMemberAttributesState = new List<Attribute>(); } else { GroupMemberAttributesState = JsonConvert.DeserializeObject<List<Attribute>>( json ); } json = ViewState["GroupRequirementsState"] as string; if ( string.IsNullOrWhiteSpace( json ) ) { GroupRequirementsState = new List<GroupRequirement>(); } else { GroupRequirementsState = JsonConvert.DeserializeObject<List<GroupRequirement>>( json ) ?? new List<GroupRequirement>(); } // get the GroupRole for each GroupRequirement from the database it case it isn't serialized, and we'll need it var groupRoleIds = GroupRequirementsState.Where( a => a.GroupRoleId.HasValue && a.GroupRole == null ).Select( a => a.GroupRoleId.Value ).Distinct().ToList(); if ( groupRoleIds.Any() ) { var groupRoles = new GroupTypeRoleService( new RockContext() ).GetByIds( groupRoleIds ); GroupRequirementsState.ForEach( a => { if ( a.GroupRoleId.HasValue ) { a.GroupRole = groupRoles.FirstOrDefault( b => b.Id == a.GroupRoleId ); } } ); } AllowMultipleLocations = ViewState["AllowMultipleLocations"] as bool? ?? false; json = ViewState["MemberWorkflowTriggersState"] as string; if ( string.IsNullOrWhiteSpace( json ) ) { MemberWorkflowTriggersState = new List<GroupMemberWorkflowTrigger>(); } else { MemberWorkflowTriggersState = JsonConvert.DeserializeObject<List<GroupMemberWorkflowTrigger>>( json ); } }