【发布时间】:2021-05-26 23:59:06
【问题描述】:
尝试绑定 IList 以便我可以更新我拥有的字段。但是,以 OnPostAsync 的空列表结束。不知道我错过了什么。
我的代码如下:
[BindProperty]
public IList<Runbook_Serverlist_Plus> RunbookServerListPlus { get; set; }
该列表使用以下代码填充了 OnGetAsync 函数:
public async Task OnGetAsync()
{
var listRunbookServerList = await _context.Runbook_Serverlist.ToListAsync();
RunbookServerListPlus = listRunbookServerList.Select(item => new Runbook_Serverlist_Plus(item)).ToList();
}
因此,我首先从我的模型中获取 IList
见下面的代码:
public class Runbook_Serverlist_Plus
{
[BindProperty]
public Runbook_Serverlist Bc {get; set; }
public Runbook_Serverlist_Plus(Runbook_Serverlist bsBc)
{
Bc = bsBc;
CheckCompleted = false;
}
public bool CheckCompleted { get; set; }
}
在我的 cshmtl 中代码如下:
<form method="post">
<table class="table">
<thead>
<tr>
<th>
@Html.DisplayNameFor(model => model.RunbookServerListPlus[0].Bc.Servername)
</th>
<th>
@Html.DisplayNameFor(model => model.RunbookServerListPlus[0].Bc.Status)
</th>
<th>
@Html.DisplayNameFor(model => model.RunbookServerListPlus[0].Bc.Cluster)
</th>
<th>
@Html.DisplayNameFor(model => model.RunbookServerListPlus[0].Bc.StatusChange)
</th>
<th>
@Html.DisplayNameFor(model => model.RunbookServerListPlus[0].Bc.PreRun)
</th>
<th>
@Html.DisplayNameFor(model => model.RunbookServerListPlus[0].Bc.Ordering)
</th>
<th></th>
</tr>
</thead>
<tbody>
@for (var i = 0; i < Model.RunbookServerListPlus.Count; i++)
{
var item = Model.RunbookServerListPlus[i];
<tr>
<td>
@Html.DisplayFor(modelItem => item.Bc.Servername)
</td>
<td>
@Html.DisplayFor(modelItem => item.Bc.Status)
</td>
<td>
@Html.DisplayFor(modelItem => item.Bc.Cluster)
</td>
<td>
@Html.DisplayFor(modelItem => item.Bc.StatusChange)
</td>
<td>
@Html.DisplayFor(modelItem => item.Bc.PreRun)
</td>
<td>
@Html.DisplayFor(modelItem => item.Bc.Ordering)
</td>
<td>
<input hidden asp-for="@item.Bc.Servername" class="form-control" />
<input asp-for="@item.CheckCompleted" class="form-control"/>
</td>
</tr>
}
</tbody>
</table>
<div class="form-group">
<input type="submit" value="Update" class="btn btn-primary" />
</div>
</form>
所以我有一个 CheckCompleted 项目的复选框,在发帖时,我想查看所有标记的复选框。 当我提交/发布时,我希望 RunbookServerListPlus 被填写。但是,这个一直是空的。
我错过了什么?
Post 功能暂时没有别的了:
public async Task<IActionResult> OnPostAsync()
{
if (!ModelState.IsValid)
{
return Page();
}
return RedirectToPage("./Index");
}
【问题讨论】:
标签: c# asp.net-core razor razor-pages