我刚写了可能存在的最丑陋的MVC代码。它是:
<table>
<tr>
<%
int i = 0;
foreach(Thyla.Models.Tag tag in this.Model)
{
i += 1;
%>
<td>
<span>
<input type="checkbox" name="TagSelector" id='<%= tag.TagName%>' value='<%= tag.TagName%>' />
<label for="<%= tag.TagName%>" title="<%= tag.TagName%>"><%= tag.TagName%></label>
</span>
</td>
<%if (i % 5 == 0){%>
</tr><tr>
<%} %>
<%} %>
<% if (i % 5 != 0){%></tr><%} %>
</table>
在ASP.NET MVC中制作具有指定列数的复选框列表的规范方法是什么?
答案 0 :(得分:2)
真的需要5吗?我问,因为每个标签的宽度都不同,所以无论如何它都会看起来很粗糙。如果你有5个长标签彼此相邻,它们可能会流入为其他事物保留的空间,这就是为什么我认为你说它是5列。
你最终可能会在一个名为vegetable-patch的标签上出现一个带有蔬菜的标签。然后在vege和它的nect列之间会有很大的差距。看起来有点奇怪。
我使用了免费的。虽然我忘记了它的来源,但这里包含了来源。希望这有帮助。
这是助手
public static class MVCTagList
{
public static string TagList(this HtmlHelper helper, IEnumerable<String> tagListItems, object htmlAttributes)
{
StringBuilder TagListMarkup = new StringBuilder();
TagListMarkup.Append("<ul");
if (htmlAttributes != null) TagListMarkup.Append(" " + htmlAttributes.ToAttributeList());
TagListMarkup.Append(">");
foreach (string tagListItem in tagListItems)
{
TagListMarkup.Append("<li>");
TagListMarkup.Append(String.Format("<a href='/Articles/?tag={0}'>{0}</a>", tagListItem));
TagListMarkup.Append("</li> ");
}
TagListMarkup.Append("</ul>");
return TagListMarkup.ToString();
}
}
这是HTML
<div style="width:450px; margin-left:50px; ">
<%
List<String> TagListItems = new List<string>();
foreach (var tag in Model)
TagListItems.Add(tag.keyword1);
%>
<%= Html.TagList( TagListItems.AsEnumerable(), new { @class="TagList" })%>
</div>
和CSS
.TagList { margin: 0 0 0 0; padding: 0 0 0 0; }
.TagList li { display:inline; border:1px solid; background-color:#316AC5; margin-left:3px; padding: 3px 3px 3px 3px; line-height:2em;}
.TagList li a { text-decoration:none; color: white; font-size:85%; white-space:nowrap; }