Asp.net core IList在回发更新的复选框时返回计数=0
我正在使用asp.net-core和razor页面。我正在尝试更新表中的复选框。 单击“保存”按钮时,我将通过asp路由传递,因为我想知道列表中有多少项,但我的IList usersAccessRights返回count=0并跳过更新函数中的我的foreach。是否有其他方法接收多少项并更新表复选框 cshtml.cs:Asp.net core IList在回发更新的复选框时返回计数=0,asp.net-core,razor-pages,Asp.net Core,Razor Pages,我正在使用asp.net-core和razor页面。我正在尝试更新表中的复选框。 单击“保存”按钮时,我将通过asp路由传递,因为我想知道列表中有多少项,但我的IList usersAccessRights返回count=0并跳过更新函数中的我的foreach。是否有其他方法接收多少项并更新表复选框 cshtml.cs: public class EditModel : PageModel { private readonly RazorContext _context; pu
public class EditModel : PageModel
{
private readonly RazorContext _context;
public EditModel(RazorContext context)
{
_context = context;
}
[BindProperty]
public IList<OutputAccessRights> UsersAccessRights { get; set; }
public async Task<IActionResult> OnGetAsync()
{
UsersAccessRights = await _context.OutputAccessRights.ToListAsync();
if (UsersAccessRights == null)
{
return NotFound();
}
return Page();
}
public async Task<IActionResult> OnPostAsync(IList<OutputAccessRights> usersAccessRights)
{
//do your stuff...
}
}
cshtml-按钮保存:
cshtml表格用户访问权限:
}以下是一个简单的演示: 1.型号:
public class OutputAccessRights
{
public int Id { get; set; }
public bool ChkUserAccessRights { get; set; }
public string SubMenuDescription { get; set; }
public string MainMenuDescription { get; set; }
public bool ChkAddRight { get; set; }
}
2.Edit.cshtml:
<form method="post">
<table class="table table-striped table-bordered dataTable tableAccessRights" id="tableAccessRights" style="width:100%">
<thead>
<tr>
<th>
MainMenu
</th>
<th>
SubMenu
</th>
<th>
Operation
</th>
</tr>
</thead>
<tbody>
@for (var i = 0; i < Model.UsersAccessRights.Count(); i++)
{
<tr>
<td>
<input class="form-check-inline"asp-for="UsersAccessRights[i].ChkUserAccessRights" />
@Model.UsersAccessRights[i].MainMenuDescription
</td>
<td>
@Model.UsersAccessRights[i].SubMenuDescription
</td>
<td>
<input class="form-check-inline" asp-for="UsersAccessRights[i].ChkAddRight" />
<label for="chkAddRight">Insert</label>
</td>
</tr>
}
</tbody>
</table>
<button type="submit" class="btn btn-primary" >Save</button>
</form>
3.Edit.cshtml.cs:
public class EditModel : PageModel
{
private readonly RazorContext _context;
public EditModel(RazorContext context)
{
_context = context;
}
[BindProperty]
public IList<OutputAccessRights> UsersAccessRights { get; set; }
public async Task<IActionResult> OnGetAsync()
{
UsersAccessRights = await _context.OutputAccessRights.ToListAsync();
if (UsersAccessRights == null)
{
return NotFound();
}
return Page();
}
public async Task<IActionResult> OnPostAsync(IList<OutputAccessRights> usersAccessRights)
{
//do your stuff...
}
}
4.结果:
您能分享您的模型吗?如果我的答案有帮助,您能接受作为答案吗?请参阅:我的模型与您的模型相同,在类OutputAccessRights:[BindProperty]public IList UsersAccessRights{get;set;}之后添加此选项我的整个应用程序都是使用PageModel的,有没有其他方法可以在不将PageModel更改为DbContext的情况下执行此操作?我不清楚您的问题。我使用PageModel,只是使用DbContext在OnGet方法上显示数据。。。
<form method="post">
<table class="table table-striped table-bordered dataTable tableAccessRights" id="tableAccessRights" style="width:100%">
<thead>
<tr>
<th>
MainMenu
</th>
<th>
SubMenu
</th>
<th>
Operation
</th>
</tr>
</thead>
<tbody>
@for (var i = 0; i < Model.UsersAccessRights.Count(); i++)
{
<tr>
<td>
<input class="form-check-inline"asp-for="UsersAccessRights[i].ChkUserAccessRights" />
@Model.UsersAccessRights[i].MainMenuDescription
</td>
<td>
@Model.UsersAccessRights[i].SubMenuDescription
</td>
<td>
<input class="form-check-inline" asp-for="UsersAccessRights[i].ChkAddRight" />
<label for="chkAddRight">Insert</label>
</td>
</tr>
}
</tbody>
</table>
<button type="submit" class="btn btn-primary" >Save</button>
</form>
public class EditModel : PageModel
{
private readonly RazorContext _context;
public EditModel(RazorContext context)
{
_context = context;
}
[BindProperty]
public IList<OutputAccessRights> UsersAccessRights { get; set; }
public async Task<IActionResult> OnGetAsync()
{
UsersAccessRights = await _context.OutputAccessRights.ToListAsync();
if (UsersAccessRights == null)
{
return NotFound();
}
return Page();
}
public async Task<IActionResult> OnPostAsync(IList<OutputAccessRights> usersAccessRights)
{
//do your stuff...
}
}