Member 12688026 Ответов: 1

Как проверить первый элемент, который был установлен в поле checkbox in ASP.NET MVC C#


0


I wanted to know what is the first item that was checked on a checkbox,

Here is my code to know what are the selected item, but I do not know how to know the first item that was checked.


Что я уже пробовал:

<pre>private List<VehicleOptionalEquipment> SelectedEngineOptions(long vehicleId, int? styleId, List<VehicleOptionalEquipment> optionalEquips)
        {
            var optionEngine = new List<VehicleOptionalEquipment>();

            foreach (var optionalEquip in optionalEquips)
            {
                if (optionalEquip.TypeId == (int)OptionSectionEnum.ENGINE)
                {
                    if (optionalEquip.IsSelected == true)
                    {
                        var engineSelected = new VehicleOptionalEquipment
                        {
                            TypeId = optionalEquip.TypeId,
                            Index = optionalEquip.Index,
                            IsSelected = optionalEquip.IsSelected
                        };
                        optionEngine.Add(engineSelected);
                    }
                    else
                    {
                        var engineNotSelected = new VehicleOptionalEquipment
                        {
                            TypeId = optionalEquip.TypeId,
                            Index = optionalEquip.Index,
                            IsSelected = optionalEquip.IsSelected
                        };
                        optionEngine.Remove(engineNotSelected);
                    }
                }
            }
            return optionEngine;
        }

    }




Here is my model:

  public class VehicleOptionalEquipment
    {
        public int TypeId { get; set; }
        public int Index { get; set; }
        public bool IsSelected { get; set; }
    }

1 Ответов

Рейтинг:
4

lmoelleb

var firstSelected = optionalEquips.FirstOrDefault(oe => oe.IsSelected)

Это делает предположения, поскольку вы не предоставляете много деталей - например, что поставляемые optionalEquips находятся в том порядке, из которого вы хотите получить первый элемент. Если это не так вам нужно использовать OrderBy до FirstOrDefault. Если ничего не выбрано, то firstSelected будет null.

Я также предполагаю, что у вас будет больше разделов, каждый со своим списком выбранных опций. Если это не так, то первый элемент в optionEngine будет содержать первый выбранный и вам не нужно ничего дополнительного - просто используйте optionEngine.FirstOrDefault()

Код, который вы удаляете невыбранные параметры - вы пробовали это в отладчике?
Вы создаете новый список и добавляете только выбранные элементы. Как можно удалить невыбранный элемент?
Даже если был элемент, который вы хотели удалить из списка, ваш код не будет идентифицировать его, поскольку он создает новый объект для представления элемента, который нужно удалить. Даже если свойства будут иметь одинаковое значение, это не один и тот же объект - поэтому он не будет удален. Либо переопределение Equals в VehicleOptionalEquipment чтобы указать, как объекты могут определить, что они равны, или поиск в интернете optionEngine для конкретного экземпляра объекта, который вы хотите удалить. Что-то вроде:

 // Assuming only one item with the id
var toRemove = optionEngine.FirstOrDefault(
      oe => oe.TypeId = optionalEquip.TypeId);

if (toRemove != null)
{
    optionEngine.Remove(toRemove);
}