加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc-2 – asp.net MVC中的checkboxlist

发布时间:2020-12-16 09:15:15 所属栏目:asp.Net 来源:网络整理
导读:我想在asp.net mvc视图中创建一个checkboxlist,并希望显示工作日(星期一,星期二,……).我想保存用户在数据库中选择的值.我怎么能在MVC2中这样做 有人建议我使用这里提到的“枚举类型为位标志”: http://msdn.microsoft.com/en-us/library/cc138362.aspx 我
我想在asp.net mvc视图中创建一个checkboxlist,并希望显示工作日(星期一,星期二,……).我想保存用户在数据库中选择的值.我怎么能在MVC2中这样做

有人建议我使用这里提到的“枚举类型为位标志”:

http://msdn.microsoft.com/en-us/library/cc138362.aspx

我怎么用呢?

请建议解决方案.

解决方法

是的,我还建议在这种情况下使用枚举.

以下是如何在ASP.NET MVC中执行此操作:

你的枚举应该是这样的(参见你提供的链接):

[Flags]
public enum Days 
{
    Sunday = 0x1,Monday = 0x2,Tuesday = 0x4,Wednesday = 0x8,Thursday = 0x10,Friday = 0x20,Saturday = 0x40 
}

为了可重用性,我创建了一个通用的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());
}

您可以对所有枚举类型使用相同的html帮助程序.

用法:

现在出于演示目的,假设你有一个这样的模型:

模型:

public class TVShow
{
    public string Title { get; set; }

    public string Description { get; set; }

    public Days AvailableOn { get; set; }

}

控制器动作:

public ActionResult Show()
{
    var show = new TVShow
    {
        Title = "Late Late Show",AvailableOn = Days.Monday | Days.Friday
    };
    return View(show);
}

查看(强类型):

<%: Model.Title %>

<%: Model.Description %>

<%: Html.CheckboxListForEnum<Days>("days",Model.AvailableOn)%>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读