如何在视图中包装列表列

时间:2019-04-29 14:37:51

标签: c# css asp.net-mvc

我有一个数据表,其中一列是linq查询返回的列表。

列表类似于:

OFAC,EPLS,UNCON,IEO,EPLS,HHS,EPLS,HHS,EPLS,EPLS,HHS,IEO

我希望列值之间用逗号分隔。

我不确定是否应该在后端执行此操作,还是应该尝试使用CSS完成此操作?

这是我的代码示例:

  internal List<string> GetListTitles(long id_validation_results)
    {
        var list = new List<string>();
        using(var db = new fabitrack_validationEntities(ValidationConnString))
        {

            list =  db.ValidationSpecifics.Where(o => o.id_validation_results == o.id_validation_results)
                        .Select(o => o.title).ToList();
        }

        return list; 
    }


  <tbody>
                    @foreach (var o in Model.Results)
                    {
                    <tr>
                        @if (o.Person.FirstName == null || o.Person.FirstName == "" || o.Person.FirstName == "NOT")
                        {
                            <td>Not Found</td>
                        }
                        else
                        {
                            <td>@Html.ActionLink(o.Person.FirstName, "Detail", "Player", new { selectedPlayerID = o.Person.IDPerson, referringController = "ValidationHistory" }, null)</td>
                        }
                        @if (o.Person.LastName == null || o.Person.LastName == "" || o.Person.LastName == "FOUND")
                        {
                            <td>Not Found</td>
                        }
                        else
                        {
                            <td>@Html.ActionLink(o.Person.LastName, "Detail", "Player", new { selectedPlayerID = o.Person.IDPerson, referringController = "ValidationHistory" }, null)</td>
                        }
                        <td>@o.Person.SocialSecurityNumber</td>
                        <td>@o.Validation_Results.IRSOk</td><!--IRS/TIN-->
                        <td>@o.Validation_Results.DMFOk</td><!--DMF Details-->
                        <td>@o.Validation_Results.ListOk</td><!--List Matches-->
                        <td>@o.Validation_Results.ExecutedAt<!--Executed At-->
                        <td>@o.Validation_Results.ExecutedBy</td><!--Executed By-->
                        <td>@o.Person.ClubID</td>
                        <td id="listcol">@o.ListMatches</td>
                    </tr>
                    }
                </tbody>        

然后我尝试了一些CSS。

#listcol {
    display: -ms-flexbox; /* IE 10 */
    display: -webkit-flex; /* Safari 6.1+. iOS 7.1+ */
    display: flex;
    -webkit-flex-flow: wrap column; /* Safari 6.1+ */
    flex-flow: wrap column;
    max-height: 150px;
}

1 个答案:

答案 0 :(得分:1)

您不应使用逗号(,)和CSS驱动显示逻辑。这是一种反模式。将来,您可能需要将逗号等分隔符更改为分号。而是从控制器将数据作为列表发送。

您可以使用以下代码作为此处的答案:How can I convert comma separated string into a List<int>

string csv = "1,2,3,4,a,5,0,3,r,5";
int mos = 0;
var intList = csv.Split(',')
                    .Where(m => int.TryParse(m, out mos))
                    .Select(m => int.Parse(m))
                    .ToList();

//返回具有整数的列表:1、2、3、4、5、0、3、5

现在您有了一个整数列表。您可以对字符串执行相同的操作。只需更改数据类型并在查询中删除int.TryParseint.Parse

然后在UI上循环浏览列表并根据需要呈现数据。