打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
ASP.NET MVC 3 CheckBoxList 的使用
    

在以前的 ASP.NET MVC 中可以直接使用 CheckBoxList,但后来不知道什么原因在 MVC 中移除了 CheckBoxList,所以默认情况下 ASP.NET MVC 3 中是没有 CheckBoxList 的,所以我们不能直接使用 @Html.CheckBoxList。今天我们通过自己动手来实现 ASP.NET MVC 3 中的 CheckBoxList 功能。

首先,让我们看看我例子中两个表之间的关系,如下图:

ZTag 表中保存的是文章分类,ZArticle 表中 Tag 字段为文章分类,为"1,3,4"这种类型,因为一篇文章可能属于好几种分类,如它同时属于 jQuery、CSS等。

直接给出 CheckBoxList 扩展的实现,如下:

public static MvcHtmlString CheckBoxList(this HtmlHelper helper,      string name, IEnumerable<SelectListItem> items) {     var str = new StringBuilder();     str.Append(@"<div class=""checkboxlist"">");      foreach (var item in items)     {         str.Append(@"<div class=""list""><input type=""checkbox"" name=""");         str.Append(name);         str.Append("\" value=\"");         str.Append(item.Value);         str.Append("\"");          if (item.Selected)             str.Append(@" checked=""chekced""");          str.Append(" />");         str.Append(item.Text);         str.Append("</div>");     }      str.Append("</div>");      return MvcHtmlString.Create(str.ToString()); }

关于扩展 ASP.NET MVC HtmlHelper 类在 ASP.NET MVC 3 分页这篇文章中就已经使用过了,并不难理解。其中我们使用到了 ASP.NET MVC 3 中自带的类 SelectListItem ,接下来完成 IEnumerable<SelectListItem> 初始化:

public static IEnumerable<SelectListItem> GetTags     (ZArticle article, IEnumerable<ZTag> tags) {     var result = new List<SelectListItem>();      foreach (var tag in tags)     {         var item = new SelectListItem         {             Text = tag.Name,             Value = tag.ID.ToString(),             Selected = article.Tag.Split(',').Contains(tag.ID.ToString())         };          result.Add(item);     }      return result; }

我将方法放在了 Common 类中,方法分别传递了 ZArticle 对象和 IEnumberable<ZTag> 对象,目的是遍历 IEnumerable<ZTag> 来初始化 IEnumerable<SelectListItem> 对象,以便将 ZTag 表字段分别输出为 checkbox。最后只需要调用 GetTags() 方法,如在文章编辑 Action 中调用如下:

public ActionResult Edit(string id) {     var article = db.Articles.Single(a => a.UrlName == id);      var tags = db.Tags.OrderByDescending(m => m.ID);     var tag = Common.GetTags(article, tags);     ViewBag.Tags = tag;      return View(article); }

最后在 View 中调用如下:

@Html.CheckBoxList("tag", (IEnumerable<SelectListItem>)ViewBag.Tags)

结果如下图所示:

ASP.NET MVC 中我们要记住 Don't Do IT Yourself 原则,获取 CheckBoxList 选中值非常简单,接收选中值方法如下:

public ActionResult Edit(string id, string s,              ZArticle article,string[] tag) {     article.UrlName = article.UrlName;     var model = db.Articles.Single(m => m.UrlName == id);     model.Tag = string.Join(",", tag);  //文章所属类别     return View(model); }

tag 即为我们调用 @Html.CheckBoxList 时使用的 "tag",也就是 CheckBox 的"name" 值,tag 即为 CheckBoxList 的选中值,最后使用 Join 方法将它转换为字符串。如下图:

到这里我们就实现了 ASP.NET MVC 3 中 CheckBoxList 的输出,并成功获取到 CheckBoxList 选中值,希望对在使用 ASP.NET MVC 3 但不知道如何使用 CheckBoxList 的朋友能带来一点帮助。

作者:东奎 发布时间:2011年06月18日
原文:ASP.NET MVC 3 CheckBoxList 的使用
版权所有,转载时必须以链接形式注明作者和原出处并保留本声明

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Asp.net MVC3 自定义HtmlHelper控件
在ASP.NET MVC中使用DropDownList
(asp.net MVC学习)System.Web.Mvc.HtmlHelper学习及使用
帝国cms文章内容tags关键词设置调用方法以及tags静态化
区别:ASP.NET MVC的Model、DTO、Command
好玩死了的小游戏
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服