【发布时间】:2018-06-03 13:14:02
【问题描述】:
我正在开发一个简单的博客应用程序,在该应用程序中,提交新帖子的用户还可以选择将一组预定义的标签与他们的帖子相关联。
目前,用户可以使用下拉列表选择多个标签(按住 ctrl):
但是,从美学上讲,这并不是我真正想要用于此目的的东西,并且更愿意让用户从一系列复选框中选择所需的标签,甚至更好 - 按钮。类似这样:
是否存在这样的等效 HTML 助手?
下面是我的带有下拉列表的工作代码供您参考。
查看:
<div class="form-group">
@Html.DropDownList("TagId", (MultiSelectList)ViewBag.Tags, new { multiple = "multiple" })
</div>
控制器:
_context 是我的数据库,包含两个表,Post 和 Tags。
public ActionResult Add()
{
var tags = _context.Tags.Select(c => new {
TagID = c.TagID,
Type = c.Type
}).ToList();
ViewBag.Tags= new MultiSelectList(tags, "TagID", "Type");
return View();
}
[AcceptVerbs("POST")]
public ActionResult Add()
{
string TagId= Request["TagID"];
var tagids = TagId.Split(',');
foreach (var tagid in tagids)
{
var id = int.Parse(tagid);
Tag tag = _context.Tags.Where(ct => ct.TagId== id).First();
post.Tags.Add(tag);
}
//Save our post
_context.Post.Add(post);
_context.SaveChanges();
return View();
}
我们也非常感谢任何替代建议,尤其是在我仍在学习的情况下 - 谢谢!
【问题讨论】:
-
否(至少在 MVC 框架中)。但是您可以轻松编写自己的
HtmlHelper扩展方法,我相信您可以在网上找到一些插件,例如 CheckBoxList.Mvc -
附带说明,不要使用
DropDownList()生成多选 - 您需要使用ListBoxFor()(请参阅this answer 以获得解释)
标签: c# html css asp.net asp.net-mvc