我正在尝试使用剃须刀页面创建排名页面。
我将从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页面上得到的。
谢谢!
答案 0 :(得分:0)
为了让我得到正确的理解,您是在3个人的排行榜之后吗? 因此,与在排行榜中位于其上方和下方的成员登录的成员一样?
看着它看起来像带一个memberId并仅返回该成员的api,还有其他api吗?可以按等级获得成员的列表,还是可以列出成员的列表?