Пытается сохранить выделение с помощью CheckBoxList в виде списка с разделителями-запятыми (string
) в БД (выбран один или несколько вариантов). Я использую прокси, чтобы сохранить как string
, потому что в противном случае мне пришлось бы создавать отдельные таблицы в БД для отношения - работа не стоит этого для этого простого сценария, и я надеялся, что могу просто преобразовать его в a string
и избегайте этого.Пытается с того, чтобы сохранить список, разделенный запятой
CheckBoxList использует enum
для его выбора:
public enum Selection
{
Selection1,
Selection2,
Selection3
}
Не быть свернуты, но я использую [Display(Name="Choice 1")]
и класс расширения, чтобы отобразить что-то дружелюбное на пользовательском интерфейсе. Не уверен, могу ли я сохранить это string
, а не только enum
, хотя я думаю, что если я сохраню как enum
, для меня не очень важно «отобразить» дружественную строку в пользовательском интерфейсе на странице подтверждения.
Это «Record» класс, который сохраняет в БД в string
:
public virtual string MyCheckBox { get; set; }
Это «прокси», который некоторые примеры я нашел, но не непосредственно дело с enum
, и который использует IEnumerable<string>
(или это должно быть IEnumerable<Selection>
?):
public IEnumerable<string> MyCheckBox
{
get
{
if (String.IsNullOrWhiteSpace(Record.MyCheckBox)) return new string[] { };
return Record
.MyCheckBox
.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries)
.Select(r => r.Trim())
.Where(r => !String.IsNullOrEmpty(r));
}
set
{
Record.MyCheckBox = value == null ? null : String.Join(",", value);
}
}
чтобы сохранить в БД, я пытаюсь сделать это в создании класса:
proxy.MyCheckBox = record.MyCheckBox; //getting error here
, но я получаю сообщение об ошибке:
Cannot implicitly convert 'string' to System.Collections.Generic.IEnumerable'
Я не знаю, если это возможно, или лучше, чтобы использовать Parse
или ToString
из API для значений перечислений.
Я знаю, что делать что-то подобное будет хранить все, что я положил в ("")
в БД, так что это просто вопрос выяснить, как преодолеть ошибки (или, если есть альтернатива):
proxy.MyCheckBox = new[] {"foo", "bar"};
Я не очень хорошо разбираюсь в этом материале и только что копаю и копаю, чтобы придумать решение. Буду признателен за любую оказанную помощь.
вашего кода геттерные расщепляется на '' а сеттер присоединяется к ','. Это верно? –
извините, это типографский код –
Итак, MyCheckBox вашего прокси-сервера IEnumerable, тогда как Record.MyCheckBox - это строка. Эти два несовместимы при назначении. Я не уверен, что у меня есть цель «прокси» здесь. –