代码之家  ›  专栏  ›  技术社区  ›  Luke Foust

MVC复选框列表

  •  1
  • Luke Foust  · 技术社区  · 15 年前

    我刚刚写的也许是现存最丑陋的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中,使用指定列数制作复选框列表的规范方法是什么?

    1 回复  |  直到 15 年前
        1
  •  2
  •   griegs    15 年前

    真的需要5分吗?我问,因为每个标签的宽度都不一样,所以看起来都很粗糙。如果你旁边有5个长标签,它们可能会流到为其他东西保留的空间里,这就是为什么我认为你要说把它设为5列。

    你可以在一个叫做蔬菜地的标签上贴上一张蔬菜标签。那么在蔬菜和它的蜜腺之间会有一个巨大的间隙。看起来有点奇怪。

    我用了一个免费的。资料来源包括在这里,但我忘了它来自哪里。

    希望这有帮助。

    这是帮手

    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; }