Как разместить данные в коде бритвы за ядром asp.net
Я хочу реализовать функцию массовых операций, но я не могу опубликовать свои данные в коде страницы бритвы, кто-нибудь может помочь? Пожалуйста, проверьте мой код ниже
<form method="post" asp-page="./Index">
<div class="row">
<div class="col-md-12">
<table class="table table-hover table-bordered" style="margin-top:15px;">
<thead>
<tr class="info">
<th></th>
<th>
<a asp-page="./Index" asp-route-sortOrder="@Model.NumberSort">
@Html.DisplayNameFor(model => model.Products[0].Number)
</a>
</th>
<th>
@Html.DisplayNameFor(model => model.Products[0].Name)
</th>
<th></th>
</tr>
</thead>
<tbody>
@foreach (var item in Model.Products)
{
<tr>
<td>
@Html.CheckBoxFor(modelItem => item.Checked)
</td>
<td class="success">
@Html.DisplayFor(modelItem => item.Number)
</td>
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
<td>
<a asp-page="./Details" asp-route-id="@item.ID" class="btn btn-info">details</a>
<a asp-page="./Edit" asp-route-id="@item.ID" class="btn btn-warning">edit</a>
<a asp-page="./Delete" asp-route-id="@item.ID" class="btn btn-danger">delete</a>
</td>
</tr>
}
</tbody>
</table>
</div>
</div>
<div class="row">
<div class="col-md-10">
@{
var items = Model.Products.Where(x => x.Checked);
}
<input type="submit" name="bulkUpload" value="bulk upload" asp-route-data="@items"/>
</div>
</div>
</form>
public async Task OnPostAsync(List<Product> upload)
{
}
1 ответ
Вам необходимо визуализировать свои продукты таким образом, чтобы Modelbinder мог их забрать при отправке формы и передать в коде.
Примерно так (сделано вручную, чтобы сначала не компилировалось):
@{
for (int i = 0; i < Model.Products.Count; i++)
{
<input type="checkbox" asp-for="Model.Produtcs[i].Checked" />
@Model.Products[i].Number
@Model.Products[i].Name
}
}
Это сделает HTML как
<input type="checkbox" name="Products[0].Checked" />
<input type="checkbox" name="Products[1].Checked" />
<input type="checkbox" name="Products[2].Checked" />
И это должно вернуться к вашему OnPostAsync. Если нет, попробуйте изменить
public async Task OnPostAsync(List<Product> upload)
в
public async Task OnPostAsync(YourModel model)
Как называется ваша полная модель?
Это тогда избыточно:
@{
var items = Model.Products.Where(x => x.Checked);
}