在我的剃刀页面应用程序中出现此错误:
严重性代码描述项目文件行抑制状态 错误(活动)CS1579 foreach 语句无法对“WorkingVote”类型的变量进行操作,因为“WorkingVote”不包含“GetEnumerator”VoteTracker S:\VisualStudioProjects\VoteTracker\Pages\WorkingVotes\Edit.cshtml 的公共实例或扩展定义
它发生的行位于我的 Edit.cshtml 上的表格主体中。
<tbody>
@foreach (var obj in Model.WorkingVote)
{...
Model.WorkingVote 有下划线。
我查找了此错误,还阅读了此处有关该错误的所有帖子,但不知道如何将其直接应用到我的应用程序。我知道它正在寻找“获取枚举器”,并且需要某种类型的集合?我尝试过更改“公共工作投票”?向 IEnumerable 或 List 进行工作投票,但这会给我带来更多错误。
这是我的.cs:
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.EntityFrameworkCore;
namespace VoteTracker.Pages.WorkingVotes;
[BindProperties]
public class EditModel : PageModel
{
private readonly ApplicationDbContext _db;
public EditModel(ApplicationDbContext db)
{
_db = db;
}
public WorkingVote? WorkingVote { get; set; }
public IEnumerable<Committee> DisplayCommitteeData { get; set; }
public IEnumerable<VoteType> DisplayVoteTypeData { get; set; }
public IEnumerable<Supervisor> DisplaySupervisorData { get; set; }
public IEnumerable<Status> DisplayStatusData { get; set; }
public async Task OnGetAsync(int Id)
{
WorkingVote = _db.WorkingVote.Find(Id);
DisplayCommitteeData = await _db.Committee.ToListAsync();
DisplayVoteTypeData = await _db.VoteType.ToListAsync();
DisplaySupervisorData = await _db.Supervisor.ToListAsync();
DisplayStatusData = await _db.Status.ToListAsync();
}
public async Task<IActionResult> OnPost()
{
if (ModelState.IsValid)
{
_db.WorkingVote.Update(WorkingVote);
await _db.SaveChangesAsync();
TempData["success"] = "Vote cast successfully.";
return RedirectToPage("Index");
}
return Page();
}
}
我已经对此进行了一段时间的测试,测试了不同的东西,但肯定需要一些帮助。谢谢!!
在您的代码中,WorkingVote 是单个对象而不是集合。如果你想在页面中迭代一个WorkingVote集合,你需要在你的EditModel中定义一个
IEnumerable<WorkingVote>
的集合。这是一个例子供您参考:
public class EditModel : PageModel
{
private readonly ApplicationDbContext _db;
public EditModel(ApplicationDbContext db)
{
_db = db;
}
public IEnumerable<WorkingVote> WorkingVotes { get; set; }
public async Task OnGetAsync(int Id)
{
WorkingVotes = await _db.WorkingVotes.Where(v => v.Id == Id).ToListAsync();
}
public async Task<IActionResult> OnPost()
{
if (ModelState.IsValid)
{
_db.WorkingVotes.UpdateRange(WorkingVotes);
await _db.SaveChangesAsync();
TempData["success"] = "Vote cast successfully.";
return RedirectToPage("Index");
}
return Page();
}
}
视图:
@page "{id:int}"
@model EditModel
<tbody>
@foreach (var obj in Model.WorkingVotes)
{
<tr> @obj.Name </tr>
}
</tbody>
当我查询id 1时: