我想在asp.net mvc视图中创建一个checkboxlist,并希望显示工作日(星期一,星期二,......).我想保存用户在数据库中选择的值.我怎么能在MVC2中这样做
有人建议我使用这里提到的"枚举类型为位标志":
http://msdn.microsoft.com/en-us/library/cc138362.aspx
我怎么用呢?
请建议解决方案.
Meh*_*iri 12
是的,我还建议在这种情况下使用枚举.
以下是如何在ASP.NET MVC中执行此操作:
你的枚举应该是这样的(参见你提供的链接):
[Flags]
public enum Days
{
Sunday = 0x1,
Monday = 0x2,
Tuesday = 0x4,
Wednesday = 0x8,
Thursday = 0x10,
Friday = 0x20,
Saturday = 0x40
}
Run Code Online (Sandbox Code Playgroud)
为了可重用性,我创建了一个通用的html帮助器,如下所示:
public static IHtmlString CheckboxListForEnum<T>(this HtmlHelper html, string name, T modelItems) where T : struct
{
StringBuilder sb = new StringBuilder();
foreach (T item in Enum.GetValues(typeof(T)).Cast<T>())
{
TagBuilder builder = new TagBuilder("input");
long targetValue = Convert.ToInt64(item);
long flagValue = Convert.ToInt64(modelItems);
if ((targetValue & flagValue) == targetValue)
builder.MergeAttribute("checked", "checked");
builder.MergeAttribute("type", "checkbox");
builder.MergeAttribute("value", item.ToString());
builder.MergeAttribute("name", name);
builder.InnerHtml = item.ToString();
sb.Append(builder.ToString(TagRenderMode.Normal));
}
return new HtmlString(sb.ToString());
}
Run Code Online (Sandbox Code Playgroud)
您可以对所有枚举类型使用相同的html帮助程序.
现在出于演示目的,假设你有一个这样的模型:
public class TVShow
{
public string Title { get; set; }
public string Description { get; set; }
public Days AvailableOn { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
public ActionResult Show()
{
var show = new TVShow
{
Title = "Late Late Show",
AvailableOn = Days.Monday | Days.Friday
};
return View(show);
}
Run Code Online (Sandbox Code Playgroud)
<%: Model.Title %>
<%: Model.Description %>
<%: Html.CheckboxListForEnum<Days>("days", Model.AvailableOn)%>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6704 次 |
最近记录: |