尝试将 CheckBoxList 中的选择保存为string
DB 中的逗号分隔列表 ( )(选择了一个或多个选项)。我正在使用代理以另存为,string
因为否则我必须在数据库中为关系创建单独的表 - 对于这个简单的场景,这项工作不值得,我希望我可以将它转换为string
并避免这种情况。
CheckBoxList 使用enum
它的选择:
public enum Selection
{
Selection1,
Selection2,
Selection3
}
不要复杂,但我使用[Display(Name="Choice 1")]
和一个扩展类在 UI 上显示一些友好的东西。不知道我是否可以保存它string
而不仅仅是enum
,虽然我认为如果我保存enum
它对我来说在某些确认页面上的 UI 上“显示”友好字符串并不是什么大不了的事。
这是在数据库中保存 a 的“记录”类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
但我得到了错误:
无法将“字符串”隐式转换为 System.Collections.Generic.IEnumerable'
我不知道是否可以或更好地使用Parse
或ToString
从 API 获取枚举值。
我知道做这样的事情会将我放入("")
数据库中的任何内容存储起来,所以只需弄清楚如何克服错误(或者,如果有替代方法):
proxy.MyCheckBox = new[] {"foo", "bar"};
我对这些东西不擅长,只是一直在挖掘和挖掘以提出解决方案。任何帮助深表感谢。