如何根据asp.net中表数据的条件以特定顺序排序表?

时间:2017-06-13 15:58:22

标签: c# html asp.net razor

我的问题:

我正在寻找一个我已设置条件的表格,以便按类型显示。例如,我的条件是行为绿色,行为红色,行为蓝色。我想订购这些表,因此它首先显示绿色行,蓝色行显示第二个,红色行显示第三个。我正在创建条件,使用razor c#将它们分类为颜色

我的研究:

我搜索过并发现了无关的问题。他们试图告诉我如何按名称等降序或升序排序。我无法找到将其应用于我创建的条件的方法

我的努力:

从建议的答案:

        public string BackgroundColour()
    {
        string colour = string.Empty;
        if (ExistsBothFolder && IsContentSame)
        {
            colour = "lightgreen";
        }
        else if (!HasSameContentWithAnotherFileName && !ExistsBothFolder && !IsContentSame && !IsDateModifiedSame)
        {
            colour = "lightcoral";
        }
        else if (ExistsBothFolder && !IsContentSame)
        {
            colour = "lightskyblue";
        }
        else if (HasSameContentWithAnotherFileName && !ExistsBothFolder)
        {
            colour = "orange";
        }
        return colour;
    }

在我看来

@foreach (var fileDetail in Model.Folder1.FileDetails.OrderBy(fd => fd.BackgroundColour == "lightgreen"? 0: (fd.BackgroundColour == "lightcoral"? 1 : 2))){

<td style="background-color: @fileDetail.BackgroundColour">

根据上述方法,我不能使用==等运算符吗? 此外,背景颜色中的剃刀@由于某种原因无法识别并要求正确的颜色

(不得不删除以前的代码,因为它说格式不正确,拒绝让我编辑帖子

1 个答案:

答案 0 :(得分:1)

将所有if条件移至模型。你的观点应该只有

<td style="background-color: @fildeDetail.BackgroundColor">
    @if (fileDetail.IsFolder )
    {
        <img alt="ListView" src="@Url.Content("https://s27.postimg.org/3ywaao4sz/new_Folder1.png")" style="width: 20px; height: 25px;" />
    }
    else
    {
        <img alt="ListView" src="@Url.Content("http://www.clker.com/cliparts/N/K/u/R/m/8/file-icon-md.png")" style="width: 20px; height: 25px;" />
    }
    <a href="#Section1">@Html.DisplayFor(modelItem => fileDetail.Name)</a>
</td>

然后,您可以根据foreach或模型本身更改订单。

@foreach(var fileDetail in Model.Folder1.FileDetails
    .OrderBy(fd => fd.BackgroundColor == "green"? 0: (fd.BackgroundColor == "red"? 1 : 2)))

虽然它看起来像代码味道,依靠颜色来设置顺序。