剃刀页面排名
Razor Page Ranking
我正在尝试使用 razor 页面制作排名页面。
我将从 API(链接到数据库)获取我的数据。
DB中的样本数据为
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。
我需要在 table 中显示排名 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 页面得到的。
谢谢!
所以我理解正确,你是在追求3人的排行榜吗?
所以在排行榜中与坐在他们之上和之下的成员一起登录的成员?
查看 api 看起来它只包含一个 memberId 和 returns 该成员,还有其他 api 吗?可以按等级或成员列表获取成员的?
我正在尝试使用 razor 页面制作排名页面。
我将从 API(链接到数据库)获取我的数据。
DB中的样本数据为
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。
我需要在 table 中显示排名 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 页面得到的。
谢谢!
所以我理解正确,你是在追求3人的排行榜吗? 所以在排行榜中与坐在他们之上和之下的成员一起登录的成员?
查看 api 看起来它只包含一个 memberId 和 returns 该成员,还有其他 api 吗?可以按等级或成员列表获取成员的?