Похоже, это должно быть просто, но я просто не могу заставить его работать!
У меня есть enum в моей модели, который я хочу отобразить в виде списка флажков.Пользователь может установить несколько флажков, и я хочу сохранить это в базе данных.
Таким образом, перечисление выглядит так (около 20 элементов без ограничений):
public enum ReferrerType
{
[Description("No Data")]
NoData = 9999,
[Description("Father or Mother")]
Parents = 1,
[Description("Brother or Sister")]
Sibling = 2,
[Description("Other")]
Other = 10
}
При этом описание является чем-тоотображается в пользовательском интерфейсе, а числовое значение - это то, что должно быть сохранено в базе данных.Числа должны оставаться в списке, так как они входят непосредственно в пакет статистики.
Затем я определил класс Referrer:
public class Referrer
{
public virtual Guid Id { get; private set; }
public virtual ReferrerType{ get; set; }
}
Я понимаю, что это может быть странным (анти) паттерном.,Я разработал его на скорую руку и раскаиваюсь на досуге.Любые советы по улучшению этой модели также будут высоко оценены!
Мой контроллер настраивает список:
private static IList<string> GenerateReferrerList()
{
var values = from ReferrerType e in Enum.GetValues(typeof(ReferrerType))
select new { Name = e.ToDescription() };
return values.Select(x => x.Name).ToList();
}
И я использую его в моем представлении так:
<div class="radio-boolean form-field" id="Referrers">
<p class="form-field-attribute"> <span class="label">Referred By </span> </p>
<% for (var i = 0; i < ((IList<string>)ViewData["ReferrerList"]).Count; i++)
{ %>
<p class="form-field-value">
<%= Html.CheckBox(string.Format("Referrers[{0}].Type", i) ) %>
<label for="Referrers"> <%= ((IList<string>)ViewData["ReferrerList"])[i]%></label>
</p>
</div>
И это не работает!Я предполагаю, что упускаю что-то очевидное, но я не могу понять, что.Там нет ошибок - просто пустая таблица базы данных, где должны быть ссылки ...
Как всегда, любая помощь очень ценится!