剃刀页面排名

时间:2020-04-02 00:51:24

标签: c# api razor razor-pages ranking

我正在尝试使用剃须刀页面创建排名页面。

我将从API(与数据库链接)中获取数据。

数据库中的样本数据为

CREATE TABLE Member (Id int, Points int);
INSERT INTO Member VALUES (1, 200);
INSERT INTO Member VALUES (2, 100);
INSERT INTO Member VALUES (3, 20);
INSERT INTO Member VALUES (4, 50);
INSERT INTO Member VALUES (5, 300);

我以Memberid = 2的身份登录,所以我的当前排名是3。

我需要在表格中显示第2、3和4级的数据。

样品显示为

Rank      MemberID           Points
 2            1                200
 3            2                100
 4            4                 50

如何做到这一点?

    using (var client = new HttpClient())
            {
                var id = Request.Cookies["MemberId"].ToString();
                client.BaseAddress = new Uri(baseUrl);
                var responseTask = client.GetAsync("api/members");
                responseTask.Wait();
                var result = responseTask.Result;
                if (result.IsSuccessStatusCode)
                {
                    var memberResponse = result.Content.ReadAsStringAsync().Result;
                    Member = JsonConvert.DeserializeObject<IList<Member>>(memberResponse);
                    var member = Member.OrderByDescending(x => x.Points);
                    Member = member.ToList().GetRange(member.ToList().FindIndex(x => x.Id == Int32.Parse(id)) - 1, 3);
                }
                else
                {
                    Member = (IList<Member>)Enumerable.Empty<Member>();
                    ModelState.AddModelError(string.Empty, "Server Error. Please contact administrator.");
                }
            }

这是我到目前为止所得到的。我只能显示用户的+1和用户的-1。但是我得到的排名是错误的。

<table class="table">
<thead>
    <tr>
        <th>
            Rank
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Member[0].UserName)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Member[0].Points)
        </th>
    </tr>
</thead>
<tbody>
    @{int rank = 0;}
    @foreach (var item in Model.Member)
    {
        <tr>
            <td>
                @{rank++;}<label># @rank</label>
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.UserName)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Points)
            </td>
        </tr>
    }
</tbody>

这就是我在cshtml页面上得到的。

谢谢!

1 个答案:

答案 0 :(得分:0)

为了让我得到正确的理解,您是在3个人的排行榜之后吗? 因此,与在排行榜中位于其上方和下方的成员登录的成员一样?

看着它看起来像带一个memberId并仅返回该成员的api,还有其他api吗?可以按等级获得成员的列表,还是可以列出成员的列表?