Я использую кеш для SelectListItems в своем приложении asp.net MVC для хранения SelectListItems, который я использую на многих страницах.Проблема в том, что когда я использую его через DropDownListFor, если я предоставляю выбранное значение этому DropDownListFor, SelectListItems выглядит измененным ... И я хочу сохранить th SelectListItems в кеше без свойства selected,
Вот кеш:
public IEnumerable<SelectListItem> GetAllPersonnelCached()
{
CacheHelper.SaveToCache("mykey", valueToCache, 240); //HttpContext.Current.Cache.Add
CacheHelper.GetFromCache<IEnumerable<SelectListItem>>("mykey"); //HttpContext.Current.Cache["mykey"]
}
Это свойства модели, которую я использую
public int? personnelSelected{ get; set; }
public IEnumerable<SelectListItem> personnelList{ get; set; }
И как я ее заполняю:
responsibleSelected = 100;
personnelList = GetAllPersonnelCached();
А вот как я использую данные в части HTML
@Html.DropDownListFor(x => x.personnelSelected, Model.personnelList, "PlaceHolder", new { data_placeholder = " " })
Когда я запускаю этот код для веб-страницы, он работает хорошо.НО тогда, когда я вызываю GetAllPersonnelCached, он дает мне все элементы, как и ожидалось, но ListItem с идентификатором 100 - "selecteditem".ЗАЧЕМ?Тот факт, что я использую DropDownListFor вносит изменения в список (на который ссылается свойство кэша в памяти)?Если да, как это предотвратить?Сделать выбранный элемент списка доступным только для чтения?
Спасибо всем