public async Task <ActionResult> Index(ParkFilterViewModel parkFilter) // Passing in parkFilter Objects from above method. { await GetApiKey(); // Needed to use API key, to populate the US map await RunBasicParkJson(); parkFilter.Parks = await db.Parks.Where(p => p.ParkState.Contains(parkFilter.SelectedState)).ToListAsync(); // Matching Park database park name with filter's Selection parkFilter.States = new SelectList(parkFilter.Parks.Select(p => p.ParkState).ToList()); // Get IEnum error if the this isn't here. Adds list back to page return(View(parkFilter)); }
// GET: Parks public async Task <ActionResult> Index() { ParkFilterViewModel parkFilter = new ParkFilterViewModel(); await GetApiKey(); // Needed to use API key, to populate the US map await RunBasicParkJson(); parkFilter.Parks = await db.Parks.ToListAsync(); // === CODE TO GET AND STYLE STATE COLUMNS ON THE PARKS INDEX PAGE, USING THE DROPDOWN ========== var fullList = parkFilter.Parks.ToList(); // All parks to reference against // Find Parks in multiple states based on comma List <string> tempStateList = new List <string>(); // Temporary holding list for multiple state parks foreach (var singleState in fullList) { if (singleState.ParkState.Contains(",")) { tempStateList.Add(singleState.ParkState); } } // Use list of multi-state parks from above ^^, and add each index List <string> multiStateCollection = new List <string>(); for (var i = 0; i < tempStateList.Count; i++) { string[] stringArray = tempStateList[i].Split(','); // must use ',' (single quote) instead of "," because Split paremeters are always char foreach (var stateArray in stringArray) { multiStateCollection.Add(stateArray); } } // Final List List <string> finalStateList = new List <string>(); List <string> currentStates = db.Parks.Select(s => s.ParkState).ToList(); // Add multi-state parks to final list foreach (var extraState in multiStateCollection) { finalStateList.Add(extraState); } // Add existing parks to final list if they don't contain a comma foreach (var state in currentStates) { if (!state.Contains(',')) { finalStateList.Add(state); } } parkFilter.States = new SelectList(finalStateList.Select(p => p).Distinct().OrderBy(s => s).ToList()); return(View(parkFilter)); }