从审计中提取记录列表 Table
Pull List of Records from Audit Table
我正在尝试从审计 table 中提取 ID 和用户名列表,其中填充了来自单独 table 的 ID 以及对想法进行投票的人的用户名。
流程应该是:
- 看到一个想法
- 点击投票按钮
- 将想法 ID、登录用户和他们单击投票按钮的日期时间添加到 IdeaBoardVote table。
- 如果查询 IdeaBoardVote table 后,IdeaId 和用户名与 IdeaBoard 记录的 Id 和用户名匹配,则禁用投票按钮。
我正在尝试使用 foreach 循环遍历 IdeaBoardVote table 以查找匹配项,但出现以下错误:
'System.Web.Mvc.SelectListItem' does not contain a definition for 'IdeaId'
这是我用于填充列表的控制器代码:
[HttpGet]
public ActionResult Index(int page = 1, string message = "")
{
ViewBag.Message = message;
if (!Request.IsAuthenticated)
{
ViewBag.Message = "You must be logged in to vote on or create new ideas.";
}
//Populate list of IdeaIds and Usernames from IdeaBoardVote table
var ideaBoardVotes = db.IdeaBoardVotes.ToList();
ViewBag.IdeaVoters = new SelectList(ideaBoardVotes, "IdeaId", "Username");
var ideaBoards = db.IdeaBoards.OrderByDescending(i => i.VoteCount).Take(100);
int pageSize = 10;
return View(ideaBoards.ToPagedList(page, pageSize));
}
这是我的观点:
@{bool hasVoted = false;}
foreach (var vote in ViewBag.IdeaVoters)
{
if (vote.IdeaId == idea.Id && vote.Username == User.Identity.Name)
{
hasVoted = true;
}
}
if (!hasVoted)
{
<a href="@Url.Action("IncreaseVote", "IdeaBoard", new { id = idea.Id })" class="btn btn-default btn-sm width-100 margin-bottom text-left">
Vote <span class="glyphicon glyphicon-thumbs-up blue"></span>
</a>
}
我收到错误消息时遗漏了什么?
大概是列名IdeaId IdeaBoardVotes 里还有别的东西table
ViewBag.IdeaVoters = new SelectList(ideaBoardVotes, "IdeaId", "Username");
谢谢@Sreenath。您的建议正是我所缺少的。这是我解决这个简单问题的方法。在我的 foreach 循环中,我使用了 vote.IdeaId 和 vote.Username。我将它们更改为 vote.Value 和 Vote.Text。
if (vote.Value == idea.Id.ToString() && vote.Text == User.Identity.Name)
{
hasVoted = true;
}
此外,更改了 bool 的声明位置,使其成为本地范围而不是页面范围。
这些微小的变化带来了不同。再次感谢@Sreenath。
我正在尝试从审计 table 中提取 ID 和用户名列表,其中填充了来自单独 table 的 ID 以及对想法进行投票的人的用户名。
流程应该是:
- 看到一个想法
- 点击投票按钮
- 将想法 ID、登录用户和他们单击投票按钮的日期时间添加到 IdeaBoardVote table。
- 如果查询 IdeaBoardVote table 后,IdeaId 和用户名与 IdeaBoard 记录的 Id 和用户名匹配,则禁用投票按钮。
我正在尝试使用 foreach 循环遍历 IdeaBoardVote table 以查找匹配项,但出现以下错误:
'System.Web.Mvc.SelectListItem' does not contain a definition for 'IdeaId'
这是我用于填充列表的控制器代码:
[HttpGet]
public ActionResult Index(int page = 1, string message = "")
{
ViewBag.Message = message;
if (!Request.IsAuthenticated)
{
ViewBag.Message = "You must be logged in to vote on or create new ideas.";
}
//Populate list of IdeaIds and Usernames from IdeaBoardVote table
var ideaBoardVotes = db.IdeaBoardVotes.ToList();
ViewBag.IdeaVoters = new SelectList(ideaBoardVotes, "IdeaId", "Username");
var ideaBoards = db.IdeaBoards.OrderByDescending(i => i.VoteCount).Take(100);
int pageSize = 10;
return View(ideaBoards.ToPagedList(page, pageSize));
}
这是我的观点:
@{bool hasVoted = false;}
foreach (var vote in ViewBag.IdeaVoters)
{
if (vote.IdeaId == idea.Id && vote.Username == User.Identity.Name)
{
hasVoted = true;
}
}
if (!hasVoted)
{
<a href="@Url.Action("IncreaseVote", "IdeaBoard", new { id = idea.Id })" class="btn btn-default btn-sm width-100 margin-bottom text-left">
Vote <span class="glyphicon glyphicon-thumbs-up blue"></span>
</a>
}
我收到错误消息时遗漏了什么?
大概是列名IdeaId IdeaBoardVotes 里还有别的东西table
ViewBag.IdeaVoters = new SelectList(ideaBoardVotes, "IdeaId", "Username");
谢谢@Sreenath。您的建议正是我所缺少的。这是我解决这个简单问题的方法。在我的 foreach 循环中,我使用了 vote.IdeaId 和 vote.Username。我将它们更改为 vote.Value 和 Vote.Text。
if (vote.Value == idea.Id.ToString() && vote.Text == User.Identity.Name)
{
hasVoted = true;
}
此外,更改了 bool 的声明位置,使其成为本地范围而不是页面范围。
这些微小的变化带来了不同。再次感谢@Sreenath。