Если вы уже используете базу данных для своего приложения, я бы хотел сохранить состояние флажков в базе данных. Причина в том, что базы данных уже оборудованы для обработки нескольких экземпляров людей, обращающихся к приложению, и проблемы параллелизма легче решать. Не говоря уже о более масштабируемой.
Я бы создал таблицу, в которой достаточно столбцов, чтобы собрать всю информацию о каждом флажке. Например:
CREATE TABLE [CheckBoxStatus] (
[CheckBoxID] nvarchar(50),
[bool] bit NULL DEFAULT 0,
[SessionID] nvarchar(50));
При загрузке вашей страницы вы можете использовать все флажки, которые находятся на вашей странице, запрашивая их идентификаторы внутри этой таблицы. Если нет записи об этом, это означает, что никто еще не установил флажок. Если это так, загрузите проверенный логический статус и обновите флажок на странице.
То же самое происходит, если вы сохраняете, просто вставьте логические значения с соответствующими checkboxID и SessionID.
Это также должно работать, если ваши checkboxID'ы каким-то образом создаются динамически. Вам нужно только быть осторожным, чтобы независимо от того, что генерирует ваш checkboxID, чтобы быть уверенным, что он всегда генерирует один и тот же идентификатор для определенного вида флажка.
Таким образом, если это что-то вроде «Красной машины», то каждый раз, когда эта «Красная машина» отображается в одном и том же контексте, необходимо генерировать одинаковый идентификатор.