【发布时间】:2011-02-02 03:10:32
【问题描述】:
这看起来应该很容易 - 但我就是无法让它工作!
我的模型中有一个枚举,我想将其显示为复选框列表。用户可以选择多个复选框,我想将其保存在数据库中。
所以枚举是这样的(大约 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
}
其中Description 是UI 上显示的内容,数值是要保存在数据库中的内容。这些数字必须保持原样,因为它们直接进入统计数据包。
然后我定义了一个 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>
而且它不起作用!我想我错过了一些明显的东西,但我不知道是什么。没有错误 - 只是一个空的数据库表应该是引用者...
一如既往,非常感谢任何帮助!
【问题讨论】:
标签: c# asp.net asp.net-mvc checkbox