這看起來應該是非常簡單的 - 但我無法實現它的功能!如何從ASP.NET複選框中獲得多個選擇
我在我的模型中有一個枚舉,我想顯示爲複選框列表。用戶可以選擇多個複選框,並且我想將其保存在數據庫中。
所以枚舉是像這樣(大約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
}
由此說明是什麼顯示在用戶界面中,並且數值是什麼是要保存在數據庫中。這些數字必須保持在列表中,因爲它們直接進入統計數據包。
我然後定義一個類引薦:
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>
而且這是行不通的!我想我錯過了一些明顯的東西,但我無法弄清楚什麼。有沒有錯誤 - 只是一個空的數據庫表,其中referrers應該是...
一如既往,任何幫助非常感謝!
謝謝 - 非常棒的迴應,我現在就放棄它 - 這與當前實現的佈局完全不同,但我希望能夠像您所建議的那樣調整視圖模型構造。 – laura 2011-02-02 09:29:27