Я пытаюсь создать страницу ранжирования, используя страницу бритвы.
Я буду получать свои данные из 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.
Спасибо!