我已经让这个网页上的老师可以将标记上传给每个学生。在那之后,老师应该能够看到每个学生的表格都有其尊重的标记。我的问题是我无法将每个标记组织给其尊敬的学生。它向我展示了每个学生以及每个学生重复过来的所有上传标记。
以下是显示标记的网页:
@{
Layout = "~/_SiteLayout.cshtml";
var galleryId = UrlData[0].AsInt();
var db = Database.Open("PhotoGallery");
var subject = db.QuerySingle("SELECT Course FROM Subjects WHERE Sub_Id = @0", galleryId);
var people = db.Query("SELECT * FROM UserProfiles WHERE Course = @0", subject.Course);
var notas = "SELECT * FROM Notas INNER JOIN UserProfiles ON Notas.UserId = UserProfiles.UserId WHERE Notas.Sub_Id = @0";
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body>
<div class="aa_2 check">
<div class="aa_3 check">
<table class="check table_not">
<tr class=" arrow2">
<th>STUDENTS</th>
<th>STUDENT´s MARK</th>
</tr>
@foreach(var users in people){
<tr class="arrow">
<td>@users.Nombre @users.Apellido</td>
<td>
@foreach (var nott in db.Query(notas, galleryId)){
@nott.Nota
}
</td>
</tr>
}
</table>
</ul>
</div>
</div>
</body>
</html>
有什么建议吗?
答案 0 :(得分:0)
你的嵌套foreach循环:
@foreach (var nott in db.Query(notas, galleryId)){
@nott.Nota
}
看起来它贯穿数据库中的每个标记并将其打印到学生的td。您需要使用where / if类型语句使其仅为该学生打印标记。顺便说一句,你的变量名称由于某种原因是不可理解的。
答案 1 :(得分:0)
安德鲁是对的。你的notas sql不正确。请尝试以下方法。
首先改变:
var notas = "SELECT * FROM Notas INNER JOIN UserProfiles ON Notas.UserId = UserProfiles.UserId WHERE Notas.Sub_Id = @0";
要:
var notas = "SELECT * FROM Notas WHERE Notas.UserId = @1 AND Notas.Sub_Id = @0"
其次改变:
foreach (var nott in db.Query(notas, galleryId)){
为:
foreach (var nott in db.Query(notas, galleryId, users.UserId)){
此刻我离开了我的开发机器,所以你可能不得不在最后一个foreach语句中的users.UserId前放一个&符号(@)。