Рейтинг бритвенных страниц - PullRequest
0 голосов
/ 02 апреля 2020

Я пытаюсь создать страницу ранжирования, используя страницу бритвы.

Я буду получать свои данные из 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>

Это то, что я получил за свою страницу cs html.

Спасибо!

1 Ответ

0 голосов
/ 02 апреля 2020

только для того, чтобы я получил правильное понимание, вы после лидеров из 3 человек? Таким образом, участник, который вошел в систему с участником, который сидит выше и ниже их в таблице лидеров?

Глядя на API-интерфейс, похоже, что он входит в memberId и возвращает только этого участника, есть ли другие API-интерфейсы? тот, который может получить членов по рангу или список членов?

...