问题
Why is the CheckBoxList removed from ASP.NET MVC preview release 5?
Currently I don't see any way in which I can create a list of checkboxes (with similar names but different id's) so people can select 0-1-more options from the list.
There is an CheckBoxList
list present in the MVCContrib library, but it is deprecated. I can understand this for the other HtmlHelpers, but there does not seem to be a replacement for the CheckBoxList
in preview 5.
I would like to create a very simple list like you see below, but what is the best way to do this using ASP.NET MVC preview release 5?
<INPUT TYPE="checkbox" NAME="Inhoud" VALUE="goed"> goed
<INPUT TYPE="checkbox" NAME="Inhoud" VALUE="redelijk"> redelijk
<INPUT TYPE="checkbox" NAME="Inhoud" VALUE="matig"> matig
<INPUT TYPE="checkbox" NAME="Inhoud" VALUE="slecht"> slecht
回答1:
A for loop in the view to generate the checkboxes
<% foreach(Inhoud i in ViewData["InhoudList"] as List<Inhoud>) { %>
<input type="checkbox" name="Inhoud" value="<%= i.name %>" checked="checked" /> <%= i.name %>
<% } %>
Don't use Html.Checkbox
, as that will generate two values for each item in the list (as it uses a hidden input for false values)
回答2:
I recently blogged about implementing the CheckBoxList helper in the MVC Beta. Here is the link.
回答3:
I have my own implementation of CheckListBox which has support for ModelState. If you are interested it's in Un CheckBoxList que funciona en ASP.NET MVC. The post is in Spanish, but you shouldn't have any problems reading the code.
What is interesting in Jeremiah solution is the fact that you can set the initial state of the checkboxes, something you can't do with my CheckListBox.
回答4:
I recommend using JeremiahClark extension posted above. (CheckBoxList)
My controller resulted into very simple instructions. For clarify I add a fragment of my code that's absent in the sample.
var rolesList = new List<CheckBoxListInfo>();
foreach (var role in Roles.GetAllRoles())
{
rolesList.Add(new CheckBoxListInfo(role, role, Roles.IsUserInRole(user.UserName, role)));
}
ViewData["roles"] = listaRoles;
And in the view:
<div><%= Html.CheckBoxList("roles", ViewData["roles"]) %></div>
That's all.
来源:https://stackoverflow.com/questions/201391/why-is-it-removed-asp-net-mvc-checkboxlist-without-mvccontrib